Powershell找到一个值并分配它

Powershell找到一个值并分配它,powershell,Powershell,我试着这么做,但看不出有什么问题。没有错误。它应该打印yyyy $test = "a.z" $list = @{ az = @{ qq = "yyyy"; ww = "uuuu"; } bz = @{ qq = "eeee"; ww = "rrrr"; } } $finalarray = $list

我试着这么做,但看不出有什么问题。没有错误。它应该打印yyyy

$test = "a.z"

$list = @{
    az = @{
        qq = "yyyy";
        ww = "uuuu";
    }
    bz = @{
        qq = "eeee";
        ww = "rrrr";
    }
}

$finalarray = $list | where ($_ -eq $test.replace('.',''))

Write-Host ("$($finalarray.qq)")

#should print yyyy

用于定义
$list
变量的
@{}
文本结构是
[hashtable]
,而不是列表类型

幸运的是,您可以按键名索引到哈希表中,因此可以显著简化逻辑:

$test = "a.z"

$list = @{
    az = @{
        qq = "yyyy";
        ww = "uuuu";
    }
    bz = @{
        qq = "eeee";
        ww = "rrrr";
    }
}

$finalArray = $list[$test.Replace('.', '')]

Write-Host $finalArray.qq

您可以在

中阅读有关这些奇妙数据结构的更多信息,将行
$finalarray=$list |其中($\ueq$test.replace('.',''))
更改为
$finalarray=$list[$test.replace('.','')]
非常感谢。我是新来的。弄糊涂了there@EricKlaus是的,最初的学习曲线可能有点陡峭,我添加了一个链接到哈希表的内置帮助文档