如何從 PowerShell 中的 Start-Process 獲取退出代碼
-
使用
-Wait
參數從 PowerShell 的Start-Process
命令中獲取退出代碼 -
通過檢查
$LastExitCode
變量從 PowerShell 的Start-Process
命令中獲取退出代碼 -
使用進程對象從 PowerShell 的
Start-Process
命令中獲取退出代碼 - 結論

在 PowerShell 中,Start-Process
Cmdlet 用於啟動新進程,但獲取使用此命令啟動的進程的退出代碼並不簡單。退出代碼表示進程完成後的狀態,對於腳本用途或確定該進程是否成功都非常有價值。
在本文中,我們將探討如何從使用 Start-Process
在 PowerShell 中啟動的進程中獲取退出代碼的方法。
使用 -Wait
參數從 PowerShell 的 Start-Process
命令中獲取退出代碼
在深入如何使用 -Wait
參數獲取退出代碼之前,讓我們簡要討論一下退出代碼是什麼。退出代碼是進程在完成時返回的數值。
傳統上,退出代碼 0
表示成功執行,而非零的退出代碼則表示由執行的應用程序或腳本定義的錯誤或特定條件。
Start-Process
Cmdlet 中的 -Wait
參數指示 PowerShell 等待啟動的進程完成,然後再繼續執行腳本。這對於獲取進程的退出代碼至關重要。
讓我們逐步探討如何實現這一點:
-
要使用
-Wait
參數啟動進程並等待其完成,請使用以下語法:Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait
將
"YourExecutable.exe"
替換為您要運行的可執行文件或腳本的路徑,並將"YourArguments"
替換為進程所需的任何參數。 -
要捕獲進程及其退出代碼,請將
Start-Process
命令存儲在變量中:$process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait -PassThru
-PassThru
參數允許將進程對象保存到變量$process
中。 -
一旦進程完成,您可以使用存儲在變量中的進程對象的
ExitCode
屬性訪問其退出代碼:$exitCode = $process.ExitCode Write-Host "Exit code: $exitCode"
Write-Host
Cmdlet 用於在控制台中顯示獲得的退出代碼。
通過使用 -Wait
參數並訪問 ExitCode
屬性,您可以成功獲取從 PowerShell 中使用 Start-Process
啟動的進程的退出代碼。
這裡是一個示例腳本,說明以上提到的步驟:
# Start the process and wait for it to complete
$process = Start-Process -FilePath "notepad.exe" -NoNewWindow -Wait -PassThru
# Retrieve the exit code
$exitCode = $process.ExitCode
Write-Host "Exit code: $exitCode"
在此示例中,我們啟動 Notepad 應用程序,等待其完成,然後獲取並顯示退出代碼。
通過檢查 $LastExitCode
變量從 PowerShell 的 Start-Process
命令中獲取退出代碼
PowerShell 自動將最近執行的進程的退出代碼存儲在 $LastExitCode
變量中。這個變量可以在使用 Start-Process
啟動進程後訪問。
這裡是利用 $LastExitCode
的逐步方法:
-
首先,使用
Start-Process
Cmdlet 啟動所需的進程。以下是通用語法:Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow
將
"YourExecutable.exe"
替換為您要運行的可執行文件或腳本的路徑,並將"YourArguments"
替換為進程所需的任何參數。 -
在進程完成後,使用
$LastExitCode
變量訪問退出代碼:$exitCode = $LastExitCode Write-Host "Exit code: $exitCode"
Write-Host
Cmdlet 用於在控制台中顯示退出代碼。
通過利用 $LastExitCode
變量,您可以輕鬆獲取從 PowerShell 中使用 Start-Process
啟動的進程的退出代碼。
以下是一個綜合的示例腳本,說明上述步驟:
# Start the process
Start-Process -FilePath "notepad.exe" -NoNewWindow
# Access the exit code
$exitCode = $LastExitCode
Write-Host "Exit code: $exitCode"
在這個示例中,我們啟動 Notepad 應用程序,然後使用 $LastExitCode
訪問並顯示退出代碼。
使用進程對象從 PowerShell 的 Start-Process
命令中獲取退出代碼
使用 Start-Process
時的 -PassThru
參數,Cmdlet 返回一個表示新啟動進程的 System.Diagnostics.Process
對象。然後,您可以使用該對象的 ExitCode
屬性訪問退出代碼。
這裡是實現這一點的逐步方法:
-
啟動所需的進程,並使用
-PassThru
參數捕獲進程對象:$process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -PassThru
將
"YourExecutable.exe"
替換為您要運行的可執行文件或腳本的路徑,並將"YourArguments"
替換為進程所需的任何參數。 -
如有需要,使用
WaitForExit()
方法等待進程完成:$process.WaitForExit()
這一步確保腳本在進程完成之前不會繼續。
-
一旦進程完成,使用該對象的
ExitCode
屬性訪問其退出代碼:$exitCode = $process.ExitCode Write-Host "Exit code: $exitCode"
Write-Host
Cmdlet 用於在控制台中顯示退出代碼。
通過利用進程對象並訪問 ExitCode
屬性,您可以成功獲取從 PowerShell 中使用 Start-Process
啟動的進程的退出代碼。
這裡是一個綜合示例腳本,說明以上提到的步驟:
# Start the process and obtain a process object
$process = Start-Process -FilePath "notepad.exe" -NoNewWindow -PassThru
# Wait for the process to complete
$process.WaitForExit()
# Access the exit code
$exitCode = $process.ExitCode
Write-Host "Exit code: $exitCode"
在這個示例中,我們啟動 Notepad 應用程序,等待其完成,然後使用進程對象獲取並顯示退出代碼。
結論
從使用 PowerShell 的 Start-Process
Cmdlet 啟動的進程中獲取退出代碼可以通過使用 -Wait
參數、$LastExitCode
變量或通過訪問 System.Diagnostics.Process
對象的 ExitCode
屬性來實現。
了解如何獲取退出代碼可以讓您以編程方式處理和響應進程的結果,增強您 PowerShell 腳本的自動化和可靠性。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn