好的,所以我有一些代码从PS脚本中调用另一个PS脚本,并传递了几个参数:Invoke-Command -ScriptBlock { param($script,$a1,$a2) &$script @($a1,$a2) } -ArgumentList @($scriptToRun,$p1,$p2) -ComputerName localhost -Credential $cred
我遇到的问题是接收脚本同时获得$ a1& $ a2在$ args [0]中合并在一起。我还不知道的是,我如何再次拆分两个数组元素?
或者,如何在没有@()
的情况下正确传递它们?
答案 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) ...