将数组元素加载到内存并将它们用作变量

时间:2017-07-18 13:52:48

标签: powershell

我有以下数组(作为脚本的一部分),其内容如下:

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

1 个答案:

答案 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

这是真正丑陋的代码,使用哈希表会更加优雅。