PowerShell中hashtable排序问题
举例子
当有这样一个hashtable
$a = @{a=1;b=2;c=3;d=4}
你也可以这么写
$a = @{
a=1
b=2
c=3
d=4
}
然后打印 $a
我期望的是:
a 1
b 2
c 3
d 4
结果是这样的:
排序
不要紧,排序一下
$a | Sort-Object
不起作用...
倒着排一下
按照Name排序一下
总之,可以说是油盐不进,就是不行。
为啥?
$a | Sort-Object -Property name -Descending | gm
可以看到我们传入Sort-Object的是一个Hashtable对象
TypeName: System.Collections.Hashtable
这玩意就是整体,没有可排序的。
解决
所以我们要把Hashtable拆为多个item的集合,一遍Sort-Object可以根据我们指定的属性进行排序,此处我们使用GetEnumerator()
方法
$a.GetEnumerator() | sort -Property name
Ref
https://devblogs.microsoft.com/scripting/weekend-scripter-sorting-powershell-hash-tables/
译者有话说
基本是原文简单翻译,虽然但是,这个设计是真狗屎。