Обычно для внутренних команд PowerShell ожидает перед началом следующей команды. Единственным исключением из этого правила является EXE-файл на основе внешней подсистемы Windows. Первый трюк состоит в том, чтобы передать Out-Null
следующим образом:
Notepad.exe | Out-Null
PowerShell будет ожидать завершения процесса Notepad.exe, прежде чем продолжить. Это изящно, но довольно тонко, чтобы разобраться с чтением кода. Вы также можете использовать Start-Process с параметром -Wait:
Start-Process <path to exe> -NoNewWindow -Wait
Если вы используете версию PowerShell Community Extensions, это:
$proc = Start-Process <path to exe> -NoWindow
$proc.WaitForExit()
Другой вариант в PowerShell 2.0 - использовать фоновое задание:
$job = Start-Job { invoke command here }
Wait-Job $job
Receive-Job $job