命令和 ScriptBlock Powershell 之间的区别

Difference between - command and ScriptBlock Powershell

ps1 在远程机器上。我 运行 服从其他机器的命令。

使用下面的脚本有什么区别---

invoke-command -computer $MachineName -command { C:\hello.ps1 }
invoke-command -computer $MachineName -scriptblock{ C:\hello.ps1 }

此外,我将使用 for 循环用于具有相同脚本名称但仅在每台远程计算机上具有不同工作顺序的多台计算机。想要了解第二台机器的执行只有在第一台机器完成后才会进行。正确吗?

-command 和 -scriptblock 的区别

执行没有区别。 -command 只是 scriptblock 的别名。您可以通过获取 invoke-command 命令

的参数信息来验证这一点
(Get-Command -Name Invoke-Command).Parameters.Values | select name, aliases

顺序执行

是的,执行是顺序的。您指定的命令将在第二台机器上执行 命令在第一台机器上完成后。

According to the help

These commands run synchronously (one at a time). When the commands complete, the output of the commands from all of the computers is saved in the $version variable. The output includes the name of the computer from which the data originated.

回答你的第二个问题:Invoke-Command 并行工作。它并行运行脚本块中提到的所有机器。默认情况下,powershell 一次最多可以与 32 台计算机对话。如果您指定的不止于此,它会将它们排队,以便在一台计算机完成时,下一台计算机将开始。但是,我相信,您可以通过指定 Invoke-Command 的 -throttlelimit 参数来增加该数字。