0

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

然而,我遇到的问题是接收脚本在 $args[0] 中将 $a1 和 $a2 组合在一起。我还想不通的是,如何再次拆分两个数组元素?

或者,我怎样才能让他们在没有 ? 的情况下正确通过@()

4

1 回答 1

1

这里不需要喷溅,所以只需删除@()

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) ...
于 2013-10-14T11:50:31.427 回答