将环境变量转换为数组

Jac*_*cek 3 powershell

我需要将数组传递给PowerShell子进程,并且想知道如何将环境变量(字符串)转换为PowerShell数组。我是否需要遵循一个约定,PowerShell会自动为我完成此约定,还是我自己需要对其进行解析?

我正在寻找bash可以做的事情。如果我设置一个环境变量,例如:

MYARR = one two three
Run Code Online (Sandbox Code Playgroud)

它会自动解释bash为数组,因此我可以这样做:

for a in ${MYARR[@]} ; do
    echo Element: $a
done
Run Code Online (Sandbox Code Playgroud)

那将返回:

Element: one
Element: two
Element: three
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在PowerShell中执行相同操作吗?

Ans*_*ers 5

在使用任何定界符的情况下拆分环境变量的值。例:

PS C:\> $ env:路径
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()。全名
System.String []

编辑: PowerShell相当于这样的bash代码

for a in ${MYARR[@]} ; do
    echo Element: $a
done
Run Code Online (Sandbox Code Playgroud)

将会

$MYARR -split '\s+' | ForEach-Object {
    "Element: $_"
}
Run Code Online (Sandbox Code Playgroud)

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