【问题标题】:Difference between - command and ScriptBlock Powershell- command 和 ScriptBlock Powershell 的区别
【发布时间】:2016-09-03 03:07:40
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: powershell powershell-4.0 powershell-remoting


    【解决方案1】:

    -command 和-scriptblock 的区别

    执行上没有区别。 -command 只是 scriptblock 的别名。您可以通过获取invoke-command 命令的参数信息来验证这一点

    (Get-Command -Name Invoke-Command).Parameters.Values | select name, aliases
    

    顺序执行

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

    According to the help

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

    【讨论】:

    • 谢谢!对我的第二个查询有任何帮助,因为我希望我的第一个调用完全执行然后想要循环中的其他服务器......是否由 for 循环处理并自动调用?
    • 这实际上取决于在传递多个计算机名时如何实现Invoke-Command。我会假设这是连续的,但我必须验证。
    • 实际上我现在无法在现场机器上进行测试,因为一些工作还要持续几天..
    • $MACHINES = Get-Content "Somelocation" foreach ($Machine in $MACHINES) { invoke-command -computer $Machine -command { C:\hello.ps1 } } hello.ps1 可用每台远程机器内部都有不同的代码,我想从一个固定服务器顺序执行每个服务器。
    • 非常感谢。一旦有机会使用实时系统,我将进行测试。
    【解决方案2】:

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

    【讨论】:

    • 我正在使用 for 循环,它仍然会并行吗?或一次一台机器.. 下面是代码。 MACHINES = Get-Content "Somelocation" foreach ($Machine in $MACHINES) { invoke-command -computer $Machine -command { C:\hello.ps1 } }
    • Lieven Keersmaekers 建议它会一个接一个地连续..
    • 我在两台实时远程机器上试过,它的顺序不是并行的。
    • ThrottleLimit 仅在将调用命令作为作业运行时适用,而不是 OP 当前正在执行的操作。
    • "Invoke-Command" 进行并行处理。由于您使用“获取内容”开始命令,因此可能无法帮助您进行并行处理。 Don Jones,解释得更好 - [link]blogs.technet.microsoft.com/heyscriptingguy/2011/06/13/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2012-01-22
    • 2011-06-10
    • 2023-03-30
    相关资源
    最近更新 更多