从变量中的变量输出变量值

时间:2016-01-13 12:31:28

标签: powershell

我无法输出变量中变量名的值。 我有一个数组,其中包含其他几个数组的名称:

>$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 个答案:

答案 0 :(得分:1)

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

相反,作为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变量尝试完成的操作,但是如果您想将输出限制为前3项在$arrayx1中,使用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
}