正在从地图 returns 中检索数据 null

Retrieving data from map returns null

我正在尝试从地图中检索信息。

地图是这样的:

$VideoIDs:

[Object[7]]
[0]: @{Key=Load_Sheet; Value =}
[1]: @{Key=Load_Folded; Value =FormLoad}
[2]: @{Key=Load_Media; Value =}
...

(空值确实应该是这样的)

此信息的获取方式与 类似,除了相同的键,我获取的是 VideoID 而不是 AlarmID。

我正在尝试检索 Load_Folded 的信息,但返回的是 null,尽管我可以看到它应该是 FormLoad。

$tmp = "Load_Folded"
$videoIdentifierString = $VideoIDs.$tmp  #gives null...same as if I do $VideoIDs[$tmp]   or $VideoIDs[$($tmp)]  or   $VideoIDs["$($tmp)"]

知道如何从地图中获取此信息吗?我无法遍历此映射,只需要获取给定键的值。

这是使用 powershell 5.1 和 VS Code。

这是关于在 PowerShell 中过滤数组中的对象,一个关于此的良好概念的好文档可能是 Where-Object,尽管有许多方法可以比其他方法更有效地完成此操作。

鉴于 pscustomobject 的数组,您目前拥有:

$result = @(
    [pscustomobject]@{ Key = 'Load_Sheet';  Value = '' }
    [pscustomobject]@{ Key = 'Load_Folded'; Value = 'FormLoad' }
    [pscustomobject]@{ Key = 'Load_Media';  Value = '' }
)
  • 使用Where-Object:
($result | Where-Object Key -EQ 'Load_Folded').Value
  • 使用.Where(..):
$result.Where({ $_.Key -eq 'Load_Folded' }).Value
  • 使用 foreachif 条件:
foreach($item in $result) {
    if($item.Key -eq 'Load_Folded') {
        $item.Value
    }
}