Uzyskanie kodu ExitCode przy użyciu Start-Process i WaitForExit zamiast -Wait
Próbuję uruchomić program z PowerShell, poczekać na wyjście, a następnie uzyskać dostęp do kodu ExitCode, ale nie mam dużo szczęścia. Nie chcę używać-Wait
zStart-Process
, ponieważ potrzebuję trochę przetwarzania, aby kontynuować w tle.
Oto uproszczony skrypt testowy:
<code>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 </code>
Uruchomienie tego skryptu spowodujeNotatnik do rozpoczęcia. Po ręcznym zamknięciu kod wyjścia zostanie wydrukowany i rozpocznie się ponownie bez użycia-wait
. Nie ma kodu ExitCode, gdy jest on zamykany:
<code>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: </code>
Muszę być w stanie wykonać dodatkowe przetwarzanie między uruchomieniem programu i oczekiwaniem na jego zamknięcie, więc nie mogę z niego skorzystać-Wait
. Jak mogę to zrobić i nadal mieć dostęp do właściwości .ExitCode z tego procesu?