在 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 是 PowerShell 指令碼環境中所有列印方法的最基本語法。
我們可以將其等同於許多不同語言的基本列印方法,例如 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