Получение ExitCode с помощью Запуск -Process и WaitForExit вместо -Wait

Пытаюсь запустить программу из PowerShell, дождаться выхода, потом получить доступ к ExitCode, но мне не повезло. Я не хочу использовать -WaitсStart-Process, так как мне нужна некоторая обработка для продолжения в фоновом режиме.

Вот упрощенный тестовый сценарий.:

cd "C:\Windows"

# ExitCode is available when using -Wait...
Write-Host "Starting Notepad with -Wait - return code will be available"
$process = (Start-Process -FilePath "notepad.exe" -PassThru -Wait)
Write-Host "Process finished with return code: " $process.ExitCode

# ExitCode is not available when waiting separately
Write-Host "Starting Notepad without -Wait - return code will NOT be available"
$process = (Start-Process -FilePath "notepad.exe" -PassThru)
$process.WaitForExit()
Write-Host "Process exit code should be here: " $process.ExitCode

Запуск этого сценария приведет к запуску Блокнота . После того, как это будет закрыто вручную, будет напечатан код выхода, и он запустится снова, без использования -wait. ExitCode не предоставляется, когда это завершено:

Starting Notepad with -Wait - return code will be available
Process finished with return code:  0
Starting Notepad without -Wait - return code will NOT be available
Process exit code should be here:

Мне нужно иметь возможность выполнять дополнительную обработку между запуском программы и ожиданием ее выхода, поэтому я не могу использовать -Wait. Как я могу это сделать и при этом иметь доступ к свойству.ExitCode из этого процесса?

60
задан Peter Mortensen 6 November 2018 в 20:39
поделиться