如何传递数组参数和其他东西?

时间:2014-03-20 16:28:31

标签: windows powershell invoke-command

$cmd = {
    param([System.Array]$filestocopy = $(throw "need files"),
    [bool]$copyxml)
    if($copy)
        #do stuff
}
$files = @("one","two","three")

invoke-command -session $s -scriptblock $cmd -argumentlist (,$files) $copyxml

错误:

  

Invoke-Command:找不到接受参数' True'的位置参数。

我搜索过高和低,无法找到如何传入数组以及参数列表中的内容。我尝试过:(,$files,$copyxml)(,$files),$copyxml(,$files) $copyxml

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

参数-ArgumentList的参数必须是数组,否则$copyxml将被解释为Invoke-Command的下一个位置参数。此外,在子表达式((,$files))中传递数组将导致它被损坏。简单地传递变量($files)就足够了。改变这个:

invoke-command -session $s -scriptblock $cmd -argumentlist (,$files) $copyxml

进入这个:

invoke-command -session $s -scriptblock $cmd -argumentlist $files,$copyxml