2015-06-16 83 views
3

我需要將數組傳遞給PowerShell子進程,並想知道如何將環境變量(字符串)轉換爲PowerShell數組。是否有一個我需要遵循的約定,所以PowerShell會自動爲我執行或我只需要自己解析它?將環境變量轉換爲數組

我正在尋找類似bash可以做的事情。如果我設置環境變量,例如:

MYARR = one two three 

它會通過bash自動解釋爲一個數組,所以我可以做:

for a in ${MYARR[@]} ; do 
    echo Element: $a 
done 

這將返回:

Element: one 
Element: two 
Element: three 

有沒有一種方法可以在PowerShell中執行相同的操作?

+3

你可以在字符串上使用-split選項並指定一個分隔符 –

回答

4

在使用任何分隔符的情況下拆分環境變量的值。例如:

 
PS C:\>$env:Path 
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\ 
PS C:\>$a = $env:Path -split ';' 
PS C:\>$a 
C:\WINDOWS\system32 
C:\WINDOWS 
C:\WINDOWS\System32\Wbem 
C:\WINDOWS\System32\WindowsPowerShell\v1.0\ 
PS C:\>$a.GetType().FullName 
System.String[] 

編輯: PowerShell的相當於bash這樣的代碼

for a in ${MYARR[@]} ; do 
    echo Element: $a 
done 

將是

$MYARR -split '\s+' | ForEach-Object { 
    "Element: $_" 
} 

使用$env:MYARR代替$MYARR如果變量是一個實際環境變量而不是PowerShell變量。

+1

剛要回答這個..... *搖動拳頭* – Matt

+0

感謝您的建議,但它需要我更改調用腳本並添加頂部的分割命令。我原來的問題並不精確,所以請看看我的編輯。 – Jacek

+0

@Jacek我不明白爲什麼你認爲你需要把分割放在調用腳本中。 –