C# - 如果使用管道(|),Powershell在使用invoke-command时不会返回任何内容。

23 浏览
0 Comments

C# - 如果使用管道(|),Powershell在使用invoke-command时不会返回任何内容。

在PowerShell中,Write-HostWrite-Output有什么区别?

例如...

Write-Host "Hello World";
Write-Output "Hello World";

0
0 Comments

问题的原因是,当在PowerShell中使用Write-Host命令并将结果通过管道传递给其他命令时,Invoke-Command不会返回任何内容。这是因为Write-Host命令不会将数据作为对象发送到管道,而是将数据直接写入信息流。

解决这个问题的方法是改用Write-Output命令来发送数据。Write-Output命令将数据作为对象发送到管道,可以正确地将结果传递给其他命令。

以下是修复该问题的示例代码:

Invoke-Command -ComputerName Server01 -ScriptBlock {
    Write-Output "Hello, World!"
} | ForEach-Object {
    # 处理传递过来的数据
    Write-Output "Received: $_"
}

在上述示例中,我们使用Write-Output命令发送数据,并通过管道将结果传递给ForEach-Object命令进行处理。通过这种方式,我们可以正确地获取到从Invoke-Command返回的数据。

希望这篇文章能够帮助你理解并解决在使用Invoke-Command时遇到管道传递数据的问题。

0