ScriptBlock中的多个命令

Ale*_*rds 5 powershell invoke-command

我在Scriptblock参数中运行多个命令时遇到问题.所有文档都指向使用分号在cmdlet之间进行分隔.使用通过分号分隔cmdlet的相同方法在我的本地计算机上工作,但不能通过invoke-command在远程计算机上工作.

例如,下面的代码只返回结果Get-Service,而不是Get-Process.

Invoke-Command -ComputerName cas-bkupexec -ScriptBlock { Get-Service;  Get-Process }
Run Code Online (Sandbox Code Playgroud)

如何实现两个命令成功运行并获得每个命令的输出所需的结果?

bri*_*ist 7

我能够重现这个..它只返回第一个语句。它不是分号,如果你使用 like 中断,它会做同样的事情。

这些选项有效:

Invoke-Command -ComputerName computer -ScriptBlock {
    (Get-Service)
    Get-Process
}
Run Code Online (Sandbox Code Playgroud)

或者奇怪的是:

Invoke-Command -ComputerName computer -ScriptBlock {
    & { 
        Get-Service
        Get-Process
    }
}
Run Code Online (Sandbox Code Playgroud)

自从将其中一个包装在( )作品中后,我觉得这一定是管道的一些怪癖,但我还无法确切地弄清楚它在做什么。

更新:

在阅读了您关于源计算机正在运行 v5 和远程 v2 的评论后,我意识到我的测试也是如此。

当我远离 v5 时,问题就消失了。

远程:

v2 -> v5: no issue
v2 -> itself: no issue
v2 -> other v2: no issue
v3 -> v2: no issue
v3 -> v5: no issue
v3 -> itself: no issue
v4 -> v2: no issue
v4 -> v3: no issue
v4 -> itself: no issue
v4 -> v5: no issue
Run Code Online (Sandbox Code Playgroud)

不是这里的每个组合,但它似乎真的可能是从 v5 到 v2 的错误。