Ну, я искал решение для этого какое-то время, без каких-либо скриптов только от CLI. Вот как я это делаю XD:
Перейдите в папку, из которой вы хотите запустить скрипт (главное, что у вас есть вкладка доработок)
..\..\dir
Теперь окружать расположение с двойной кавычки и внутри них добавляют cd
, поэтому мы можем вызвать еще один экземпляр powershell.
"cd ..\..\dir"
Добавить другую команду, чтобы запустить сценарий, разделенные ;
, с представляет собой разделитель команд в PowerShell
"cd ..\..\dir\; script.ps1"
Наконец запустить его с другим экземпляром PowerShell
start powershell "cd..\..\dir\; script.ps1"
Это откроет новое окно PowerShell, перейдите к ..\..\dir
, запустите script.ps1
и закройте окно.
Обратите внимание, что ";" просто отделяет команды, например, вы набирали их один за другим, если первый провал второй будет запущен, а затем следующий и следующий после ... Если вы хотите открыть новое окно powershell, вы добавите -noexit в переданную команду. Обратите внимание, что я сначала перейду к нужной папке, чтобы я мог использовать завершение вкладок (вы не могли бы использовать двойные кавычки).
start powershell "-noexit cd..\..\dir\; script.ps1"
Используйте двойные кавычки ""
, чтобы вы могли передать каталоги с пробелами в именах например,
start powershell "-noexit cd '..\..\my dir'; script.ps1"
Хм, хорошо, может быть, мне следовало бы более подробно рассказать о моем сценарии. На самом деле это скрипт, который вызывает «ant» с некоторыми параметрами. Поэтому я должен вызвать 'ant' из этой папки, чтобы убедиться, что он правильно находит файл конфигурации. В идеале я ищу что-то временное, чтобы изменить каталог выполнения локально внутри этого скрипта. – poke
А в таком случае вам нужно будет 'Push-Location' и' Pop-Location' – JohnL
осторожно, что $ MyInvocation чувствителен к контексту, я обычно делаю $ ScriptPath = (Get-Variable MyInvocation -Scope Script) .Value.MyCommand ,Путь, который работает из любого вида вложения или функции –