2011-08-22 8 views
46

何らかの理由で、scriptblockにパラメータとして文字列の配列を渡すことができないようです。私はここで間違って何をしていますか?別のスクリプトから呼び出され配列をパラメータとして別のスクリプトに渡すにはどうすればいいですか?

マイスクリプト:

param(
    [parameter(Mandatory=$true)] 
    [string[]]$myarr 
) 

foreach ($elem in $myarr){ 
$elem 
} 

私は

[email protected]("111","222") 
start-job -filepath myscript.ps1 -arg $myarr 

として別のスクリプトから呼び出すには、配列内の最初の項目を得た - "111"

答えて

66

を以下のように試してみてください:

start-job -filepath myscript.ps1 -arg (,$myarr) 

-ArgumentListは、引数のリスト/配列を取ります。したがって、-arg $myarrと指定すると、配列の要素を引数として渡すようになります。ですから、PowerShellに配列である単一の引数として扱わなければなりません。

+0

うん、うまくいく。なぜ説明できますか? :)私はコンマin()を理解するので、実際には2つのサブ配列を持つ配列です。 – mishkin

+7

@Mishkin - ArgumentListは引数のリスト/配列を取ります。ですから、 '-arg $ myarr'を与えると、配列の要素を引数として渡すようになります。ですから、powershellに配列である単一の引数として扱わせる必要があります。 – manojlds

+0

どのように配列と別の変数を渡しますか? -arg(、$ myarr、$ singleValue)。この例では、$ singleValue = "x" – eHaze

関連する問題