我对打印(回显)到控制台的各种方式有些困惑。我已经看到有多种方法可以将输出写入控制台,例如:

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/

10-14 15:54
查看更多