我尝试将多个csv导入的列表添加到远程执行的PS脚本中。当我使用以下命令仅传递一个列表时,它工作正常:
Invoke-Command -filepath $createSAPSPath -ConnectionUri $uri -Credential $credential -ArgumentList (,$accountsList)
多个列表对象的正确语法是什么?我试过了:
Invoke-Command -filepath $createSAPSPath -ConnectionUri $uri -Credential $credential -ArgumentList (,$accountsList),(,$groupsList)
但它似乎不起作用......
谢谢,
格伦
答案 0 :(得分:7)
你必须意识到为什么你需要在第一种情况下使用一元逗号,理解为什么在第二种情况下不需要它。
参数-ArgumentList
采用Object[]
参数类型。如果要传递单个集合,则需要阻止PowerShell将单个参数(恰好是集合)视为传递给此参数的参数集合。
如果您已经传递了集合(例如$AnyObject, $EvenCollection
),则无论单个对象的类型如何,PowerShell都会执行用户通常期望的操作:将第一个集合传递给第一个参数,将第二个集合传递给第二个参数。
总结一下:你应该能够像这样运行:
Invoke-Command -filepath $createSAPSPath -ConnectionUri $uri -Credential $credential -ArgumentList $accountsList, $groupList
...并获得预期的结果。
答案 1 :(得分:3)
以这种方式尝试:
$AccountList = 'Account1','Account2'
$GroupList = 'Group1','Group2'
invoke-command {$args[0];'*****';$args[1]} -ArgumentList (,$AccountList,$GroupList)
Account1
Account2
*****
Group1
Group2
答案 2 :(得分:0)
另一个...
$myArrList = [System.Collections.ArrayList]@()
$myArrList2 = [System.Collections.ArrayList]@()
//add your elements here
$arguments = @()
$arguments += (,$myArrList)
$arguments += (,$myArrList2)
$j = Start-Job -Name $('job-' +$env:COMPUTERNAME) -ScriptBlock $scriptBlockJob -ArgumentList $arguments