如何构建属性数组以传递到Powershell中的Invoke命令中?

如何构建属性数组以传递到Powershell中的Invoke命令中?,powershell,Powershell,我需要使用Invoke命令在域上/域外的远程计算机上执行Powershell脚本块 我有如下类似的内容: Invoke-Command -ComputerName $targetServer -ArgumentList @($selectedProjects, $targetURI, $buildRetention) -ScriptBlock $cleanupSB -Credential $PSCred 属性“-Credential$PSCred”仅在我想在域外的机器上执行时才需要,因此我想动

我需要使用Invoke命令在域上/域外的远程计算机上执行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命令一起使用的方法?谢谢

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

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

PS C:\> help about_Splatting

我知道这不是你想要的,但是你能不能检查一下机器是否在域上,然后做一些类似于
if(机器在域上){Invoke Command}或者{Invoke Command with creds}
?@TheMadTechnician是的,这就是我现在拥有的。但是想象一下,如果我有多个脚本块和多个Invoke命令表达式。现在,条件语句开始重复..如果将其设置为函数,则不会重复。这就是为什么我们有函数的原因之一,以避免重复。您可以使用来构造条件参数列表。这是一个更好的选择,您应该将其添加为答案@Bill_Stewart