【问题标题】:How can I build an array of properties to pass into Invoke-Command in Powershell?如何构建一组属性以传递给 Powershell 中的 Invoke-Command?
【发布时间】:2014-07-02 21:53:06
【问题描述】:

我需要使用 Invoke-Command 在域上/域外的远程计算机上执行 Powershell 脚本块。

我有以下类似的内容:

Invoke-Command -ComputerName $targetServer -ArgumentList @($selectedProjects, $targetURI, $buildRetention) -ScriptBlock $cleanupSB -Credential $PSCred

只有当我想在域外的机器上执行时才需要属性“-Credential $PSCred”,因此我想动态构造与“Invoke-Command”一起使用的属性

我试图创建一个数组,例如:

$prop = @("-Credential", "`$PSCred")
Invoke-Command -ComputerName $targetServer -ArgumentList @($selectedProjects, $targetURI, $buildRetention) -ScriptBlock $cleanupSB $($prop)

但是,这并没有按照我的意图进行解释。有没有我可以动态创建这些参数并将它们与 Invoke-Command 一起使用?谢谢!

【问题讨论】:

  • 我知道这不是你要找的,但你不能只检查机器是否在域中,然后执行If(Machine is on domain){Invoke-Command}Else{Invoke-Command with creds} 之类的操作吗?
  • @TheMadTechnician 是的,这就是我现在所拥有的。但是想象一下,如果我有多个带有多个 Invoke-Command 表达式的脚本块。现在条件语句开始重复......
  • 如果你把它变成一个函数就不行。这就是我们使用函数来避免重复的原因之一。
  • 可以使用splatting构造条件参数列表。
  • 这是一个更好的选择,您应该将其添加为答案@Bill_Stewart

标签: powershell


【解决方案1】:

您可以使用splatting 来构造条件参数列表。

您还可以在 PowerShell 提示符下查看此主题:

PS C:\> help about_Splatting

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2016-09-24
    相关资源
    最近更新 更多