Powershell写主机与写输出以及列表项之间的换行符

时间:2015-06-03 12:53:37

标签: powershell scripting

我可以使用以下脚本编写Powershell的输出:

Write-Host "Hello", "1234"
Write-Output "Hello", "2345"

该程序的输出是:

Hello 1234
Hello
2345

因此,带有逗号分隔列表的Write-Host在项之间放置一个空格。写输出在它们之间添加换行符。 5种不同的Write-xxxxxxx语句之间存在很多差异,但为什么世界上这两种语句的输出会有所不同,以及如何将写输出更改为写主机?

WTF微软?

1 个答案:

答案 0 :(得分:3)

Write-Output理解对象并写入管道,而Write-Host则不会写入控制台主机。您通常不应该使用Write-Host,除非在特殊情况下,因为这样您就会丢失Powerhsell的面向对象的接口并恢复为cmd.exe范例。

获得你想要的东西:

write-output "$('Hello', '2345')"

当您将数组放入字符串内部时,它会被$OFS分隔符连接并分隔,默认情况下为<space>

为了更清楚地理解这一点,请考虑以下示例:

> write-output "hello", "world" | % { "item" }
item
item
> write-host "hello", "world" | % { "item" }
hello world