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/

译者有话说

基本是原文简单翻译,虽然但是,这个设计是真狗屎。

posted @ 2022-09-15 14:28  talentzemin  阅读(104)  评论(0编辑  收藏  举报