2016-01-13 91 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