如何从包含“键”和“值”文本的哈希表中检索所有键?

时间:2018-10-09 21:48:40

标签: powershell syntax properties key hashtable

在PowerShell中,您可以使用Hashtable属性从Keys获取所有密钥:

$ht=@{
    "1"="10";
    "2"="20";
}
$ht.Keys

这将返回:

2
1

但是:

$ht=@{
    "Keys"="Keys text";
    "text1"="text1111"
}
$ht.Keys

将返回Keys textKeys项目的值)

是否有任何方法可以强制.Keys返回Keys属性而不是Keys项目的值?

2 个答案:

答案 0 :(得分:3)

这似乎是一个错误,因为检索Keys条目的语法取代了HashTable的{​​{1}}属性,尽管我可以看到有人期望它以两种方式表现。根据GitHub上的Adding a key of 'keys' to a Hashtable breaks access to the .Keys property问题,此一个错误,但需要进行重大更改才能更正,因此以下解决方法已添加到文档中。

根据about_Hash_Tables

  

如果键名与HashTable类型的属性名之一冲突,则可以使用Keys访问这些属性。例如,如果键名称为PSBase,并且您想返回键的集合,请使用以下语法:

     

keys

您还可以通过反射来获取属性值...

$hashtable.PSBase.Keys

答案 1 :(得分:2)

$ht | Select-Object -ExpandProperty Keys