2012-03-27 86 views
0

我想寫一個PowerShell腳本(同時學習)。使用csv作爲PowerShell腳本參數

我有以下命名參數

param([String] $Workspace = $pwd, 
     [String] $Files  = "*", 
     [String] $Locales = "de,es,fr,it,nl,pt_BR,ru", 
     [String] $Exception = "TINP_D=TIGF,TIN_F=TIGD", 
     [Switch] $Verbose, 
     [Switch] $Whatif) 

可以說爲$語言環境,我使用分裂遍歷每個區域與

foreach ($locale in $Locales.split(",")) { 

到目前爲止好。當我在不帶雙引號的命令中指定語言環境列表時,問題就開始了,因爲它被檢測爲字符串數組,並且它變成了「de es fr」,作爲回報,它會中斷我的代碼,因爲它需要一個CSV字符串。

這同樣適用於$ Exception參數,但爲此,我在逗號上分割,然後在等號上分割。

任何想法,我該怎麼做?

回答

4

有更多的解決方案,最簡單的一種是改變參數,以便它是一個字符串

[String[]] $Locales = ('de', 'es', ...) 

然後就是遍歷數組

foreach ($locale in $Locales) 
的陣列
+0

這種方法的問題是, param列表已經以逗號分隔,用逗號定義默認數組值並打破參數列表 – rojanu 2012-03-27 07:51:19

+0

正確,使用括號,然後它應該起作用。 – stej 2012-03-27 07:57:01

+0

+1的確,通常你可以爲函數/ ​​cmdlet指定實際的字符串數組。 – Joey 2012-03-27 07:59:49