网站首页 文章专栏 powershell write-host 和 write-output 有什么区别
powershell write-host 和 write-output 有什么区别
编辑时间:Dec. 19, 2019, 9:50 a.m. 作者:赵彦昌 浏览量:4348

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用作常规实践,因为我们希望代码能够生成其他函数或指令使用的输出。




来说两句吧
最新评论