抑制 PowerShell 錯誤
無論我們是想在錯誤發生時忽略錯誤訊息還是終止指令碼的執行,Windows PowerShell 都有很多選項來處理錯誤。本文將討論處理和抑制錯誤的多種技術。
PowerShell 中的錯誤操作簡介
儘管抑制 Windows PowerShell 錯誤很容易,但這樣做並不總是最好的選擇(儘管可以)。如果我們不小心告訴 PowerShell 隱藏錯誤,它可能會導致我們的指令碼行為不可預測。
抑制錯誤訊息還會使故障排除和資訊收集變得更加複雜。因此,請小心謹慎地使用你將在本文中看到的以下片段。
在 PowerShell 中使用 -ErrorAction
引數
處理錯誤的最常用方法是將 -ErrorAction
引數開關附加到 cmdlet。 -ErrorAction
引數開關讓 PowerShell 告訴如果 cmdlet 產生錯誤該怎麼做。
命令:
Get-Service 'svc_not_existing' -ErrorAction SilentlyContinue
在上面的命令中,我們正在查詢一個不存在的服務。通常,如果服務不存在,PowerShell 會丟擲錯誤。
由於我們使用 -ErrorAction
引數,指令碼將按預期繼續,就像它沒有錯誤一樣。
在 PowerShell 中設定錯誤操作首選項
如果我們需要指令碼以某種方式執行(例如抑制錯誤),我們可能會考慮設定一些偏好變數。首選項變數充當 PowerShell 的配置設定。
我們可能會使用首選項變數來控制 PowerShell 保留的歷史記錄項的數量,或者強制 PowerShell 在執行特定操作之前詢問使用者。
例如,你可以使用首選項變數將整個會話的 -ErrorAction
引數設定為 SilentlyContinue
。
命令:
$ErrorActionPreference = 'SilentlyContinue'
我們可以為 ErrorAction
開關引數指定許多其他錯誤操作。
Continue
:PowerShell 將顯示錯誤訊息,但指令碼將繼續執行。Ignore
:PowerShell 不產生任何錯誤訊息,在主機上寫入任何錯誤輸出,並繼續執行。Stop
:PowerShell 將顯示錯誤訊息並停止執行指令碼。Inquire
:PowerShell 顯示錯誤訊息,但如果使用者想繼續,將首先要求確認。SilentlyContinue
:如果程式碼不起作用或出現非終止錯誤,PowerShell 會靜默繼續執行程式碼。Suspend
:PowerShell 暫停指令碼的工作流程。
如前所述,-ErrorAction
開關必須與 PowerShell cmdlet 結合使用。例如,我們使用 Get-Process
cmdlet 來演示 ErrorAction
開關的工作原理。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn