在 PowerShell 中輸出資訊性訊息

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. 在 PowerShell 中匯出輸出簡介
  2. PowerShell 中的 Write-Output Cmdlet
  3. PowerShell 中的 Write-HostWrite-Information Cmdlet
  4. PowerShell 中的 Write-Warning Cmdlet
  5. PowerShell 中的 Write-Debug Cmdlet
  6. PowerShell 中的 Write-Error Cmdlet
  7. PowerShell 中的 Write-Verbose Cmdlet
在 PowerShell 中輸出資訊性訊息

將資訊性訊息寫入控制檯是任何語言的基本過程,因為它可以正確地向使用者提供反饋。但是,在 Windows PowerShell 中有多種列印訊息的方法。

本文將區分多個寫入命令,例如寫入資訊、警告和錯誤訊息,並提供我們可以在何時何地使用它們的情況。

在 PowerShell 中匯出輸出簡介

在我們開始討論不同的寫入命令之前,值得注意的是,PowerShell 可以通過用單引號 ('') 或雙引號 ("") 將單行括起來來輸出訊息。

示例程式碼:

"Hello World!"
'Hello World'

輸出:

Hello World!
Hello World

由於字串的文字表示式和隱藏的字串管道,此語法在 PowerShell 中是可能的。上面的幾個程式碼片段等價於下面的示例程式碼。

示例程式碼:

"Hello World!" | Out-Host

Out-Host 命令傳送前面的物件以在控制檯上顯示。

PowerShell 中的 Write-Output Cmdlet

第一種列印方法是 Write-Output 命令。此 cmdlet 是 PowerShell 指令碼環境中所有列印方法的最基本語法。

我們可以將其等同於許多不同語言的基本列印方法,例如 printstdout

示例程式碼:

Write-Output "Hello World!"

輸出:

Hello World!

PowerShell 中的 Write-HostWrite-Information Cmdlet

Write-Host 命令是另一種列印方法,類似於以前的方式 Write-Output

此命令在 PowerShell 5.0 中更新之前的唯一區別是該方法只能使用引數 -BackgroundColor-ForegroundColor 輸出具有不同顏色的訊息。

如前所述,從 Windows PowerShell 5.0 開始,Write-Host 現在是 Write-Information 的包裝器。這允許我們使用 Write-Host 將輸出傳送到資訊流。

此 cmdlet 可以抑制或捕獲使用 Write-Host 命令寫入的資料,同時保持向後相容性。

$InformationPreference 首選項變數和 -InformationAction 標準引數不影響 Write-Host 訊息。該規則的例外是
-InformationAction Ignore,有效抑制 Write-Host 輸出。

使用 Write-HostWrite-information 寫入資訊流不會對你的輸出字串造成問題。

如果我們使用 -InformationAction 引數,我們還可以操縱資訊流的可見性,前提是我們還將給定的引數值繫結到函式中的 Write-Host 語句。

例如,下面的示例將預設禁用資訊流,除非通過 -InformationAction 引數另行請求。

Write-Host 'This is a test message' -InformationAction $InformationPreference -ForegroundColor Green

PowerShell 中的 Write-Warning Cmdlet

Write-Warning 命令將警告訊息寫入 Windows PowerShell 主機。對警告事件的響應取決於使用者的 $WarningPreference 變數和 -WarningAction 標準引數的值。

$WarningPreference 變數的有效值如下。

  1. Stop - 顯示警告和錯誤訊息,然後停止執行。
  2. Inquire - 顯示警告訊息並以確認訊息的形式提示使用者允許繼續。
  3. Continue - 變數的預設值。顯示警告訊息,然後執行它。
  4. SilentlyContinue - 不顯示警告資訊。繼續執行。

示例程式碼:

Write-Warning "This is only a test warning notification." -WarningAction Continue

PowerShell 中的 Write-Debug Cmdlet

Write-Debug 命令也是在 PowerShell 中列印的另一種方法。但是,這通常在開發中更多地用於在指令碼環境中列印除錯訊息。

預設情況下不顯示除錯訊息,但可以使用 $debugPreference 變數進行更改。

示例程式碼:

Write-Debug "Error on line 1. Please investigate."
$debugPreference = "Continue"
Write-Debug "Error on line 5. Please investigate."

輸出:

DEBUG: Error on line 5. Please investigate.

PowerShell 中的 Write-Error Cmdlet

Write-Error 命令輸出一個非終止錯誤。預設情況下,錯誤會在錯誤流中傳送到 PowerShell 主機程式,以便與輸出一起匯出。

要輸出非終止錯誤,請輸入錯誤訊息字串、ErrorRecord 物件或 Exception 物件。然後,使用 Write-Error 的不同引數來填充我們將匯出的錯誤記錄。

非終止錯誤會將錯誤寫入錯誤流,但不會停止命令處理。例如,如果在一組輸入項中的一項上引發非終止錯誤,則 cmdlet 將繼續處理其他項。

示例程式碼:

Write-Error "Invalid object" -ErrorId B1 -TargetObject $_

輸出:

Write-Error "Invalid object" -ErrorId B1 -TargetObject $_ : Invalid object
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : B1

PowerShell 中的 Write-Verbose Cmdlet

Write-Verbose 命令將文字寫入 PowerShell 中的詳細訊息流。

Write-Debug 命令一樣,預設情況下不顯示詳細訊息,但可以使用變數 $VerbosePreference 或新增開關引數 -Verbose 顯示。

示例程式碼:

Write-Verbose -Message "This will not be displayed."
Write-Verbose -Message "This will be displayed" -Verbose

輸出:

VERBOSE: This will be displayed
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