如果我创建一个哈希表,然后尝试按键查询它,它就不会检索它们。这是因为密钥实际上不是单个密钥,而是称为" KeyCollection"。我如何获得实际密钥?
$states = @{1=2} #This creates the hashtable
$states.keys[0] #This returned 1
$States.get_item($states.keys[0]) # This returned nothing (expected 1)
$States.keys[0].getType() #This returned "KeyCollection" as the Name.
有人可以向我解释为什么它" KeyCollection"而不是1,以及如何获得String?
答案 0 :(得分:2)
然后你需要使用get_enumerator,如下所示:
$states = @{"Alaska"="Big"}
$states.GetEnumerator() | ForEach-Object {
Write-Host "Key: $($_.Key)"
Write-Host "Value: $($states[$_.Key])"
}
答案 1 :(得分:1)
我认为发生的事情是KeyCollection没有索引器,因此PowerShell将[0]
的使用解释为尝试访问数组中的项目,而KeyCollection被视为单个项目一个数组。
您可以使用ForEach-Object循环键:
$states.Keys | foreach { Write-Host "Key: $_, Value: $($states[$_])" }