3

Я новичок в создании командных файлов. Я пытаюсь запустить команду, которая откроет Windows PowerShell в определенном каталоге, а затем один раз там, чтобы запустить команду.

Пока у меня есть следующее. Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'" Кажется, это работает при открытии PowerShell в нужном месте, но я не могу заставить его запустить командный node sp .

Я пробовал следующее безуспешно PowerShell -NoExit -Command "Write-Host 'node sp'"

Кроме того, возможно ли открыть Windows PowerShell на синем экране дисплея, а не в окне CMD (черно-белое)?

1 ответ1

7

Поскольку вы не предоставили свой полный файл bat, я думаю, что это

Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
PowerShell -NoExit -Command "Write-Host 'node sp'"

Это неправильный подход. Сначала вы запускаете Powershell, который переходит в данный каталог, а затем остается открытым. Если вы выйдете из этого PowerShell, файл bat запустит второй PowerShell.

Вам нужно запустить один PowerShell и позволить ему выполнять обе команды. Одним из способов является

Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'; Write-Host 'node sp'"

Другой способ - написать файл сценария PowerShell, такой как MyScript.ps1, со следующим содержимым:

cd 'c:\Dev\ProductDev'
Write-Host 'node sp'

и запустите PowerShell не давая ему команду на выполнение, а на сценарий для выполнения (см. также этот и этот вопрос StackOverflow). Вы можете либо запустить эту команду напрямую, либо поместить ее в файл bat, либо даже использовать ее в качестве команды для выполнения в файле lnk:

PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1"

Проблема с PowerShell заключается в том, что по умолчанию он не запускает сценарии, которые не (криптографически) подписаны. Самый простой способ решить эту проблему - параметр -ExecutionPolicy Bypass .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .