网站首页 文章专栏 powershell write-host 和 write-output 有什么区别
Write-Host 和 Write-Output 有什么不同?
在一般情况下,不应该在上下文中使用Write-Host,除非你希望利用它的特定功能。要将任何数据输出到控制台,最好使用Write-Output而不是Write-Host。
Write-Output 返回的输出将传递到管道,以便管道之后的函数或指令可以读取该输出以进行进一步处理。如果使用Write-Host,管道将获取不到任何输出。
让我们用一个小例子来检验这种行为
function Send-text { write-host "I am sending to console" } function Send-textwithwriteoutput { write-Output "I am sending to console" } function Receive-Text { process { write-Host "Received : $_" } }你可以将上面的代码直接 拷贝到powershell 控制台上。
它有三个方法:
1. Send-Text # 使用Write-Host将文本发送到控制台
2. Send-TextWithWriteOutput # 使用Write-Output将文本发送到控制台
3. Receive-Text # 从管道接收输入并显示
现在看看下面的输出:
从上面的输出可以很清楚地看出,当使用Write-Host将文本发送到控制台时,它不会传递到管道。但当使用Write-Output时,Receive-Text 函数将解析并显示该值。
不是说你不应该使用写主机,而是我的意思是在正确的地方使用。例如,如果要对显示到控制台的文本应用颜色,则其他任何指令都不能替换Write-Host 。因此,更明智的做法是将Write-Output用作常规实践,因为我们希望代码能够生成其他函数或指令使用的输出。