Powershell Sort-Object PSCustomObject with Object[] 作为值
Powershell Sort-Object PSCustomObject with Object[] as value
我正在使用 RestAPI 访问 azure。我正在获取构建 ID 的变更集列表。
我想用递增的变更集编号对对象类型进行排序。
我收到的 $changeset.GetType()
类型:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
这是输出 $changeset
:
count value
----- -----
50 {@{id=68.......
因此,我检查了值的类型 $changeset.value.GetType()
:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
然后我检查了一个元素的类型:
$changeset.value[0].GetType():
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
我确实尝试过 Sort-Object
升序和降序,但它并没有改变顺序:
$changeset = $changeset | sort-object { $_.value.id } -desc
我想保持结构不变,以免破坏某些东西。组件中有很多属性。
没有示例工作数据集,很难为您的用例创建绝对可行的解决方案,但是您可以使用以下方法对数据进行排序:
$changeset | Select-Object -ExpandProperty value | Sort-Object -Property id
这将 return 直接 属性 value
下的所有对象并按 属性 id
.
排序
如果您想保留对象作为一个整体及其当前结构:
$changeset.value = @($changeset.value | Sort-Object -Descending -Property Id)
即:
您必须将 Sort-Object
调用应用到 .value
属性,其中包含要按其排序的 [pscustomobject]
个实例的数组.Id
属性 个值。
在 @(...)
中包含命令,array-subexpression operator 确保排序对象被视为一个数组,即使在某些情况下只有 一个 对象可能存在。
将结果分配回 $changeset.value
会将原始数组替换为新的排序数组。
我正在使用 RestAPI 访问 azure。我正在获取构建 ID 的变更集列表。
我想用递增的变更集编号对对象类型进行排序。
我收到的 $changeset.GetType()
类型:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
这是输出 $changeset
:
count value
----- -----
50 {@{id=68.......
因此,我检查了值的类型 $changeset.value.GetType()
:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
然后我检查了一个元素的类型:
$changeset.value[0].GetType():
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSCustomObject System.Object
我确实尝试过 Sort-Object
升序和降序,但它并没有改变顺序:
$changeset = $changeset | sort-object { $_.value.id } -desc
我想保持结构不变,以免破坏某些东西。组件中有很多属性。
没有示例工作数据集,很难为您的用例创建绝对可行的解决方案,但是您可以使用以下方法对数据进行排序:
$changeset | Select-Object -ExpandProperty value | Sort-Object -Property id
这将 return 直接 属性 value
下的所有对象并按 属性 id
.
如果您想保留对象作为一个整体及其当前结构:
$changeset.value = @($changeset.value | Sort-Object -Descending -Property Id)
即:
您必须将
Sort-Object
调用应用到.value
属性,其中包含要按其排序的[pscustomobject]
个实例的数组.Id
属性 个值。在
@(...)
中包含命令,array-subexpression operator 确保排序对象被视为一个数组,即使在某些情况下只有 一个 对象可能存在。将结果分配回
$changeset.value
会将原始数组替换为新的排序数组。