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