Как правильно открыть ядро ​​powershell в новом окне? - PullRequest
1 голос
/ 09 ноября 2019

Эта команда открывает новое окно powershell, запускает команды и затем завершает работу:

Start-Process powershell { echo "hello"; sleep 1; echo "two"; sleep 1; echo "goodbye" }

Если я вместо этого запускаю Powershell Core, оно открывает новое окно, но новое окно сразу выходит:

Start-Process pwsh { echo "hello"; sleep 1; echo "two"; sleep 1; echo "goodbye" }

Как правильно выполнить такой вызов с помощью pwsh?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

Не используйте блок скрипта ({ ... }) с Start-Process - он связывает в виде строки с параметром -ArgumentList, что означает его буквенное содержимое - за исключением включенных { и } - передается.

  • In Windows PowerShell (powershell.exe), параметр по умолчанию для CLI -Command.

  • In PowerShell Core (pwsh.exe / pwsh),это -File [1] , поэтому ваша команда не выполняется.

В PowerShell Core вы должны использовать -Command (-c)в явном виде:

Start-Process pwsh '-c', 'echo "hello"; sleep 1; echo "two"; sleep 1; echo "goodbye"'

[1] Это изменение было необходимо для правильной поддержки использования PowerShell Core в shebang lines на Unix-подобных платформах.

1 голос
/ 09 ноября 2019

Кроме того, если вы запустили start-process -nonewwindow, вы увидите сообщение об ошибке «Не удается найти файл». И такой скрипт должен работать: start-process pwsh .\script.ps1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...