我们是否曾经想过,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会在变量内部生成并存储输出。因此,如果脚本编写者不知道控制台是否正常运行远程主机,则不建议使用Write-Host进行PowerShell远程处理。
另一个区别是,使用Write-Host cmdlet,可以用背景和前景(文本)颜色装饰输出,而在Write-Output命令中则无法实现。
Write-Host "Dark green backgound with White text" -BackgroundColor DarkGreen -ForegroundColor White Dark green backgound with White text