web-dev-qa-db-ja.com

Invoke-command-ArgumentListパラメーター構文

リモートで実行されたPSスクリプトに複数のcsvインポートリストを追加しようとしています。次のコマンドを使用してリストを1つだけ渡すと、正常に機能します。

Invoke-Command -filepath $createSAPSPath -ConnectionUri $uri -Credential $credential -ArgumentList (,$accountsList)

複数のリストオブジェクトの正しい構文は何ですか?私はもう試した:

Invoke-Command -filepath $createSAPSPath -ConnectionUri $uri -Credential $credential -ArgumentList (,$accountsList),(,$groupsList)

しかし、それはうまくいかないようです...

ありがとう、

グレン

4
Glenn

最初の状況で単項コンマが必要な理由を理解し、2番目の状況で単項コンマが必要ない理由を理解する必要があります。

パラメータ-ArgumentListかかりますObject[]引数の型。単一のコレクションを渡す場合は、PowerShellが単一の引数(たまたまコレクション)をこのパラメーターに渡される引数のコレクションとして扱わないようにする必要があります。

すでにコレクションになっているものを渡した場合(例:$AnyObject, $EvenCollection)個々のオブジェクトの種類に関係なく、PowerShellはユーザーが通常期待することを実行します。つまり、最初のコレクションを最初のパラメーターに渡し、2番目のコレクションを2番目のパラメーターに渡します。

要約すると、次のように実行できるはずです。

Invoke-Command -filepath $createSAPSPath -ConnectionUri $uri -Credential $credential -ArgumentList $accountsList, $groupList

...そして期待される結果を得る。

8
BartekB

この方法で試してください:

$AccountList = 'Account1','Account2'
$GroupList    = 'Group1','Group2'

invoke-command {$args[0];'*****';$args[1]} -ArgumentList (,$AccountList,$GroupList) 

Account1
Account2
*****
Group1
Group2
4
mjolinor