在PowerShell中,您可以使用Hashtable
属性从Keys
获取所有密钥:
$ht=@{
"1"="10";
"2"="20";
}
$ht.Keys
这将返回:
2
1
但是:
$ht=@{
"Keys"="Keys text";
"text1"="text1111"
}
$ht.Keys
将返回Keys text
(Keys
项目的值)
是否有任何方法可以强制.Keys
返回Keys
属性而不是Keys
项目的值?
答案 0 :(得分:3)
这似乎是一个错误,因为检索Keys
条目的语法取代了HashTable
的{{1}}属性,尽管我可以看到有人期望它以两种方式表现。根据GitHub上的Adding a key of 'keys' to a Hashtable breaks access to the .Keys property问题,此是一个错误,但需要进行重大更改才能更正,因此以下解决方法已添加到文档中。
如果键名与HashTable类型的属性名之一冲突,则可以使用
Keys
访问这些属性。例如,如果键名称为PSBase
,并且您想返回键的集合,请使用以下语法:
keys
您还可以通过反射来获取属性值...
$hashtable.PSBase.Keys
答案 1 :(得分:2)
$ht | Select-Object -ExpandProperty Keys