如何在 PowerShell 中輸出資訊性消息
- 導出 PowerShell 中的輸出介紹
-
PowerShell 中的
Write-Output
Cmdlet -
PowerShell 中的
Write-Host
和Write-Information
Cmdlet -
PowerShell 中的
Write-Warning
Cmdlet -
PowerShell 中的
Write-Debug
Cmdlet -
PowerShell 中的
Write-Error
Cmdlet -
PowerShell 中的
Write-Verbose
Cmdlet

將信息訊息寫入控制臺是一個在任何語言中都至關重要的過程,因為它正確地向用戶提供反饋。然而,在 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 是所有打印方法中最基本的語法。
我們可以將其等同於許多不同語言的基本打印方法,如 print
和 stdout
。
示例代碼:
Write-Output "Hello World!"
輸出:
Hello World!
PowerShell 中的 Write-Host
和 Write-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-Host
或 Write-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
變量的有效值如下。
Stop
- 顯示警告和錯誤消息,然後停止執行。Inquire
- 顯示警告消息並提示用戶以確認消息的形式請求繼續的權限。Continue
- 變量的默認值。顯示警告消息,然後執行。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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn