在 PowerShell 5.1 中,我将 JSON 文件读入对象数组并按一个属性的降序对它们进行排序,但是当我使用单个语句时,排序不会保存到最终变量中……
在 PowerShell 5.1 中,我将 JSON 文件读入对象数组并按一个属性对其进行降序排序,但当我使用单个语句时,排序不会保存到最终变量中。将其分成两个语句是可行的,我很好奇为什么一个语句可行而另一个却不行。
这是我的代码:
作品:
$versions = Get-Content $jsonFilePath | Out-String | ConvertFrom-Json
$versions = $versions | Sort-Object -Descending -Property Version
无包:
$versions = Get-Content $jsonFilePath | Out-String | ConvertFrom-Json | Sort-Object -Descending -Property Version
编辑...
JSON:(文件中已经排序,但我们不假设)
[
{
"UIVersion": "2024.21.5",
"Version": "12.5.1.1"
},
{
"UIVersion": "2024.20.15",
"Version": "12.5.1"
},
{
"UIVersion": "2024.20.10",
"Version": "12.5"
},
{
"UIVersion": "2024.20.9",
"Version": "12.3.6"
},
{
"UIVersion": "2024.20.7",
"Version": "12.3.6"
},
{
"UIVersion": "2024.20.1",
"Version": "12.3.6"
},
{
"UIVersion": "2024.20.6.2",
"Version": "12.3.6"
},
{
"UIVersion": "2024.20.100",
"Version": "12.3.6"
},
{
"UIVersion": "2024.20.200",
"Version": "12.3.6"
},
{
"UIVersion": "2024.20.9.1",
"Version": "12.3.6"
},
{
"UIVersion": "2024.26.3.1",
"Version": "12.3.6"
}
]
这两个示例没有提供完全相同的输出,这 ConvertFrom-Json
在 Windows PowerShell 5.1 中非常具体,原因是 cmdlet 输出时没有枚举每个对象。在较新版本的 PowerShell 7+ 中,这种情况已不再存在, -NoEnumerate
switch -NoEnumerate 开关
为了克服这种行为,您可以将表达式括在括号中以强制从管道进行枚举。 Grouping operator ( )
分组运算符()
(Get-Content $jsonFilePath -Raw | ConvertFrom-Json) | Sort-Object Version -Descending