我对打印(回显)到控制台的各种方式有些困惑。我已经看到有多种方法可以将输出写入控制台,例如:
Write-Host "Hello world1"
"Hello World2"
Out-Host -InputObject "Hello World3"
所有三种方式都将打印到控制台。中间的一个在某种程度上更简单,更简洁,更易于使用。我还发现,当您编写一个函数时,例如:
function GetValues()
{
"1"
"2"
}
它仍然在管道中返回两个字符串:
而且我仍然能够打印出这些值:
foreach ($s in GetValues)
{
Write-Host "s: " $s
}
我发现只使用带引号的字符串并不总是出现在自定义主机上,而且我不得不使用 Write-Host 来获取要在自定义主机上打印的值。
不知何故,我觉得这很令人困惑。
"Print something"
应该是 Write-Host
的别名还是意图是什么? 最佳答案
PowerShell 的默认行为只是转储掉出管道的所有内容,而不会被另一个管道元素拾取或分配给变量(或重定向)到 Out-Host
中。 Out-Host
所做的显然是依赖于主机的。
只是让事情从管道中掉出来并不能代替 Write-Host
存在的唯一原因是在主机应用程序中输出文本。
如果需要输出,请使用 Write-*
cmdlet。如果您想从函数返回值,那么只需将对象转储到那里,无需任何 cmdlet。
关于powershell - 如何在 PowerShell 中写入控制台?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10832000/