从splatted对象中分割出一个数组

时间:2013-10-14 11:37:57

标签: powershell

好的,所以我有一些代码从PS脚本中调用另一个PS脚本,并传递了几个参数:Invoke-Command -ScriptBlock { param($script,$a1,$a2) &$script @($a1,$a2) } -ArgumentList @($scriptToRun,$p1,$p2) -ComputerName localhost -Credential $cred

我遇到的问题是接收脚本同时获得$ a1& $ a2在$ args [0]中合并在一起。我还不知道的是,我如何再次拆分两个数组元素?

或者,如何在没有@()的情况下正确传递它们?

1 个答案:

答案 0 :(得分:1)

此处不需要Splatting,因此只需删除@()

即可
Invoke-Command -ScriptBlock {
  param($script,$a1,$a2)
  & $script $a1 $a2
} -ArgumentList $scriptToRun,$p1,$p2 ...

默认行为是将参数列表中的每个参数分配给脚本块的参数定义中的相应位置参数。

或者,如果你想使用splatting,你需要这样做:

Invoke-Command -ScriptBlock {
  param($script,$params)
  & $script @params
} -ArgumentList $scriptToRun,@($p1,$p2) ...