【发布时间】: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