Bueno, estaba buscando una solución para esto por un tiempo, sin ningún script solo desde CLI. Así es como lo hago XD:
navegar hasta la carpeta de la que desea ejecutar la escritura (Lo importante es que usted tiene la ficha terminaciones)
..\..\dir
Ahora rodean ubicación con doble comillas, y dentro de ellas agregue cd
, para que podamos invocar otra instancia de powershell.
"cd ..\..\dir"
Añadir otro comando para ejecutar secuencias de comandos separados por ;
, con es un separador de comandos de PowerShell
"cd ..\..\dir\; script.ps1"
Finalmente ejecutarlo con otra instancia de PowerShell
start powershell "cd..\..\dir\; script.ps1"
Esto abrirá una nueva ventana de PowerShell, vaya a ..\..\dir
, ejecute script.ps1
y cerrar la ventana.
Tenga en cuenta que ";" simplemente separa los comandos, como los tipeó uno por uno, si falla primero se ejecutará el segundo y el siguiente después, y el siguiente después ... Si desea mantener abierta la nueva ventana de powershell, agregue -noexit en el comando pasado. Tenga en cuenta que primero navego a la carpeta deseada para poder usar tabulaciones (no se pueden hacer comillas dobles).
start powershell "-noexit cd..\..\dir\; script.ps1"
Use comillas dobles ""
para que pudieran pasar los directorios con espacios de nombres por ejemplo,
start powershell "-noexit cd '..\..\my dir'; script.ps1"
Hmm, bien, tal vez debería haber sido un poco más claro sobre mi guión. En realidad, es un script que llama 'hormiga' con algunos parámetros. Así que tengo que llamar a 'ant' desde esa carpeta para asegurarme de que encuentre el archivo de configuración correctamente. Idealmente, estoy buscando algo para cambiar temporalmente el directorio de ejecución localmente dentro de ese script. – poke
Ah, entonces en ese caso querrá 'Push-Location' y' Pop-Location' – JohnL
teniendo cuidado con eso, $ MyInvocation es sensible al contexto, usualmente hago $ ScriptPath = (Get-Variable MyInvocation -Scope Script) .Value.MyCommand .Ruta que funciona desde cualquier tipo de anidamiento o función –