我有以下数组(作为脚本的一部分),其内容如下:
Arr[0] -> "$var1 = c:\Temp\aaa"
Arr[1] -> "$var2 = c:\Temp\abc"
Arr[2] -> "$var3 = c:\Temp\abc\xyz"
我希望能够在我的脚本中使用所有数组元素。
是否可以将数组元素加载到内存中,并在另一个脚本中将它们用作定义的变量? 请注意,变量不是脚本的一部分。 我将它们构建到数组中并存储在那里。
例如(在另一个脚本上运行):
Copy-Item -Path $var1 -Destination $var2
答案 0 :(得分:0)
您需要对数组中的条目使用单引号,以便不使用替换,并将路径用双引号括起来。然后,您可以使用Invoke-Expression
设置条目中的变量:
$Arr = '$var1 = "c:\Temp\aaa"','$var2 = "c:\Temp\abc"','$var3 = "c:\Temp\abc\xyz"'
Invoke-Expression $Arr[0]
示例:
PS C:\> $Arr = '$var1 = "c:\Temp\aaa"','$var2 = "c:\Temp\abc"','$var3 = "c:\Temp\abc\xyz"'
PS C:\> "var1 = $var1"
var1 =
PS C:\> Invoke-Expression $Arr[0]
PS C:\> "var1 = $var1"
var1 = c:\Temp\aaa
这是真正丑陋的代码,使用哈希表会更加优雅。