如何在 PowerShell 中輸出資訊性消息

  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 是所有打印方法中最基本的語法。

我們可以將其等同於許多不同語言的基本打印方法,如 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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
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