我正在尝试运行远程代码:
$servers = @("myserver.local")
Invoke-Command -ScriptBlock {
#############
Write-Host "Test1:" "xxx";
hostname
Write-Host "Test2:" "yyy";
#############
} -ComputerName $servers
并得到以下输出:
Test1: xxx
Test1: xxx
myserver
Test2: yyy
Test2: yyy
预期输出:
Test1: xxx
myserver
Test2: yyy
正如你所看到的,Write-Host
的输出是双倍的,但是hostname
是可以的。为什么?
2条答案
按热度按时间mrfwxfqh1#
这不是问题。您的输出是双倍的,因为您在两个服务器上执行它。如果您增加它,那么输出也会增加。
这里的问题是,输出没有分别按照每个主机来,这意味着存在格式/顺序问题。
下面是根据你的评论所做的示例。我已经将一个参数传递到远程系统的脚本块中,并将输出捕获到正在运行的PS会话中。
为了便于理解,我在每一行都用注解解释了这些行。
uqzxnwby2#
我不知道你是否仍然有这个问题,但我遇到了同样的问题,问题似乎是一个输出来自
Write-Host
和其他来自Invoke-Command
作为命令的结果。这两个中的一个需要被抑制,不管是哪一个,下面的示例代码抑制了
Invoke-Command
的输出注意,
6>$null
给Invoke-Command
使重复信息流为空,并且只打印一个:测试1:xxx
我的服务器
测试2:年