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+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告