PowerShell 不会对对象数组进行排序

Mar*_*arc 1 powershell

为什么 PowerShell (v5) 不按键对这个对象数组进行排序?

'[{"key":"f5"},{"key":"f1"},{"key":"f8"}]' | ConvertFrom-Json | sort key
Run Code Online (Sandbox Code Playgroud)
key
---
f5
f1
f8
Run Code Online (Sandbox Code Playgroud)

尝试过的其他变体包括... | Sort-Object -Property {$_.key}

Mar*_*arc 5

答案是,当直接通过管道传输数据时,每个对象分别单独到达 Sort-Object cmdlet,然后它只是将其吐出。

解决方案是使用括号将整个数组传递给 Sort:

('[{"key":"f5"},{"key":"f1"},{"key":"f8"}]' | ConvertFrom-Json) | sort key
Run Code Online (Sandbox Code Playgroud)
key
---
f1
f5
f8
Run Code Online (Sandbox Code Playgroud)