- 命令和ScriptBlock Powershell之间的区别

时间:2016-09-02 08:01:20

标签: powershell powershell-v4.0 powershell-remoting

ps1在远程计算机上。我正在接受其他一些人的命令。

使用以下脚本---

之间有什么区别吗?
invoke-command -computer $MachineName -command { C:\hello.ps1 }
invoke-command -computer $MachineName -scriptblock{ C:\hello.ps1 }

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

2 个答案:

答案 0 :(得分:3)

-command和-scriptblock

之间的区别

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

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

顺序执行

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

According to the help

  

这些命令同步运行(一次一个)。当命令   完成后,所有计算机的命令输出都是   保存在$ version变量中。输出包括的名称   数据源自的计算机。

答案 1 :(得分:0)

回答第二个问题:Invoke-Command并行工作。它将脚本块中提到的内容并行运行到所有机器上。默认情况下,powershell将同时与32台计算机通信。如果您指定了更多,它将排队,以便当一台计算机完成时,下一个计算机将开始。但是,我相信,您可以通过指定Invoke-Command的-throttlelimit参数来增加该数量。