PowerShell 中 Write-Output 和 Write-Host 命令的區別?
我們是否想過,Write-Output 和 Write-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
廣告