PowerShell 中 Write-Output 和 Write-Host 命令的區別?


我們是否想過,Write-OutputWrite-Host 都用於列印字串或命令的輸出,那麼它們之間有什麼區別呢?

示例

PS C:\> Write-Output "Test String"
Test String
PS C:\> Write-Host "Test String"
Test String

輸出結果相同。

第一個主要區別在於使用管道結構儲存輸出。Write-Output 和 Write-Host 都支援管道結構,例如:

示例

"Test String" | Write-Output
Test String

"Test String" | Write-Host
Test String

輸出結果相同。

第一個主要區別在於使用管道結構儲存輸出。Write-Output 和 Write-Host 都支援管道結構,例如:

示例

"Test String" | Write-Output
Test String

"Test String" | Write-Host
Test String

但是當我們儲存輸出時,它顯示了兩個命令之間的區別。

輸出

$a = "Test String" | Write-Output

Get-Variable a

Name Value
---- -----
a Test String


$b = "Test String" | Write-Host
Test String

Get-Variable b

Name Value
---- -----
b

在上面的例子中,當字串輸出儲存到變數中時,Write-Output 可以儲存它,而 Write-Host 將輸出顯示在控制檯中,並且輸出不會分配給變數,因為 Write-Host 將輸出直接輸出到控制檯,而 Write-Output 會生成輸出並將其儲存在變數中。這就是不建議在 PowerShell 遠端處理中使用 Write-Host 的原因,除非指令碼編寫者知道遠端主機是否正常執行控制檯。

另一個區別是,使用 Write-Host cmdlet,您可以使用背景色和前景色(文字顏色)裝飾輸出,而這在 Write-Output 命令中是不可能的。

示例

Write-Host "Dark green backgound with White text" -BackgroundColor DarkGreen -ForegroundColor White

Dark green backgound with White text

更新於:2020年11月11日

5K+ 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告