抑制 PowerShell 錯誤

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. PowerShell 中的錯誤操作簡介
  2. 在 PowerShell 中使用 -ErrorAction 引數
  3. 在 PowerShell 中設定錯誤操作首選項
抑制 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn