将环境变量转换为数组

时间:2015-06-16 12:57:27

标签: powershell

我需要将一个数组传递给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中做同样的事情吗?

1 个答案:

答案 0 :(得分: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: $_"
}

如果变量是实际的环境变量而不是PowerShell变量,请使用$env:MYARR而不是$MYARR