如何在PowerShell中按照对象属性值对数组进行排序?

3
例如,我有一个变量,它返回带有多个数组的行:
@{sourceDSAcn=B; LastSyncResult=0} @{sourceDSAcn=A; LastSyncResult=9} @{sourceDSAcn=C; LastSyncResult=0} @{sourceDSAcn=M; Last SyncResult=10}

我想按照一个参数的字母顺序对这行进行排序。在这种情况下,按sourceDSAcn排序,结果应该是这样的:
@{sourceDSAcn=A; LastSyncResult=9} @{sourceDSAcn=B; LastSyncResult=0} @{sourceDSAcn=C; LastSyncResult=0} @{sourceDSAcn=M; Last SyncResult=10}

我该如何做到这一点?


3
$variable 按照 sourceDSAcn 属性进行排序。 - Mathias R. Jessen
1个回答

5

您的输出格式表明了两件事:

  • 这些对象不是数组,而是自定义对象[pscustomobject]实例)。

  • 您使用了Write-Host命令将这些对象打印到主机(显示屏),这导致在您的问题中显示了类似于哈希表的表示形式(请参见this answer)。

    • 如果您想要默认的丰富显示格式 - 同时仍将输出发送到主机而不是成功输出流 - 您可以使用Out-Host命令。
    • 相反,要生成数据输出到管道,请使用Write-Output命令或更好地使用PowerShell的隐式输出功能,如下所示;有关更多信息,请参见this answer
为了按照给定的属性对(自定义)对象进行排序,只需将该属性的名称传递给Sort-Object的(位置隐含的)-Property参数,就像Mathias R. Jessen友情建议的那样:
# Using $variable by itself implicitly sends its value through the pipeline.
# It is equivalent to: Write-Output $variable | ...
$variable | Sort-Object sourceDSAcn # same as: ... | Sort-Object -Property sourceDSAcn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接