2016-01-13 60 views
0

输入变量中变量名称的值时遇到问题。 我有一个包含其他几个阵列像这样的名字一个数组:变量内变量的输出变量值

>$arrayx1 
array00 
array01 
array02 
array03 
array10 
array11 
array12 
array13 

每这些阵列都有自己的价值,我想该值在一个循环中输出的文件。我得到了循环和其他一切工作,除了输出数组的名称而不是数组的值。

$outnr1 = 0 
$outnr2 = 0 
$null | out-file $path 
foreach ($nr3 in $arrayx1) { 
    $output = $arrayx1[$outnr2] 
    echo "$($output)" | out-file $path -encoding Unicode -append 
    $outnr2 = $outnr2 + 1 
    if ($outnr2 -gt 3) { 
     $outnr1 = $outnr1 + 1 
     } 
    }   

文件最终看起来像$ arrayx1

+1

按名称获取变量,你应该使用'GET-Variable' cmdlet的。 – PetSerAl

回答

1

可变变量(如$$Name在PHP)在PowerShell中不支持。

相反,如mentioned in the comments,你应该使用Get-Variable检索一个变量你的名字值:

foreach($varName in $arrayx1) 
{ 
    $var = Get-Variable -Name $varName -ValueOnly 
    $var | Out-File $path -Encoding Unicode -Append 
} 

我不完全清楚在你想什么在你原来的例子在$outnr1$outnr2变量完成,但如果你想限制$arrayx1输出到只是第3项,使用Select-Object -First

foreach($varName in $arrayx1 | Select-Object -First 3) 
{ 
    $var = Get-Variable -Name $varName -ValueOnly 
    $var | Out-File $path -Encoding Unicode -Append 
} 

或范围运算符:

foreach($varName in $arrayx1[0..2]) 
{ 
    $var = Get-Variable -Name $varName -ValueOnly 
    $var | Out-File $path -Encoding Unicode -Append 
} 
+0

谢谢,解决了! 我将使用$ outnr1和$ outnr2在正在写入的文件中设置换行符。 – Nihth