2011-08-22 100 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

是的,它的工作原理。你能解釋爲什麼嗎? :)據我所知,逗號()意味着它實際上是一個有兩個子數組的數組,對吧? – mishkin

+7

@Mishkin - 解釋是-ArgumentList需要一個參數列表/數組。所以當你給出'-arg $ myarr'時,就好像你傳遞數組的元素作爲參數一樣。所以你必須強迫powershell把它當作一個單一的參數,這是一個數組。 – manojlds

+0

你會如何傳遞數組和另一個變量? -arg(,$ myarr,$ singleValue)。例如,$ singleValue =「x」 – eHaze

相關問題