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
广告