Получить возврат из cmd.exe выхода - PullRequest
0 голосов
/ 07 июня 2018

Я разрабатываю приложение PowerShell.Я использую, например,

Start-Process "cmd.exe" "/c some_command"
#rest of the source code

Но когда я запускаю это, он не ждет закрытия cmd.exe перед выполнением остальной части исходного кода.

Как я могу получить cmd.exe «событие выхода», чтобы продолжить выполнение моего сценария PowerShell?

Или другой способ перевести сценарий PowerShell в спящий режим, пока запущен cmd.exe?

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Вы можете вызывать CMD напрямую из PowerShell:

cmd.exe /c some_command

В случае, если исполняемый файл предоставляется в виде строки, а не пустого слова, вы должны поставить префикс оператора с оператором вызова (в противном случае использование оператора необязательно):

& 'cmd.exe' /c some_command

Этот тип вызова автоматически выполняется синхронно.

Start-Process вызов по умолчанию является асинхронным.Вы можете изменить поведение на синхронное, добавив параметр -Wait.

0 голосов
/ 07 июня 2018

Помимо использования -Wait, вы также можете проверить код завершения, чтобы проверить успешность команды:

[int]$ExitCode = (Start-Process "cmd.exe" "/c some_command" -Wait).ExitCode

# Check exit code
if ($ExitCode -ne 0) {
    throw "Something went wrong.
}

Это полезно для отладки и проверки cmd успеха.

0 голосов
/ 07 июня 2018

Я нашел ответ использовать -wait

Start-Process "cmd.exe" "/c some_command" -wait
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...