有许多不同的方式来输出消息。Write-Host通过、Write- Output或输出某些内容之间的有效区别是什么[console]::WriteLine?
Write-Host
Write- Output
[console]::WriteLine
我还注意到,如果我使用:
write-host "count=" + $count
被+包含在输出中。为什么?在写出之前,不应该评估表达式以产生单个连接字符串吗?
+
Write-Output当您想在管道中发送数据但不一定想在屏幕上显示时应该使用。如果没有其他东西首先使用它,管道最终会将它写入out- default。
Write-Output
out- default
Write-Host当你想做相反的事情时应该使用。
[console]::WriteLine本质上Write-Host是在幕后做的事情。
运行此演示代码并检查结果。
function Test-Output { Write-Output "Hello World" } function Test-Output2 { Write-Host "Hello World" -foreground Green } function Receive-Output { process { Write-Host $_ -foreground Yellow } } #Output piped to another function, not displayed in first. Test-Output | Receive-Output #Output not piped to 2nd function, only displayed in first. Test-Output2 | Receive-Output #Pipeline sends to Out-Default at the end. Test-Output
您需要将串联操作括在括号中,以便 PowerShell 在标记参数列表之前处理串联Write-Host,或使用字符串插值
write-host ("count=" + $count) # or write-host "count=$count"
顺便说一句 - 观看Jeffrey Snover 的视频,解释管道是如何工作的。当我开始学习 PowerShell 时,我发现这是对管道如何工作的最有用的解释。