约 2438 字

约 12 分钟

#PowerShell 的 Sort-Object 命令

Sort-Object
    [[-Property] <Object[]>]
    [-Stable]
    [-Descending]
    [-Unique]
    [-InputObject <PSObject>]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]

Sort-Object
    [[-Property] <Object[]>]
    -Top <Int32>
    [-Descending]
    [-Unique]
    [-InputObject <PSObject>]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]

Sort-Object
    [[-Property] <Object[]>]
    -Bottom <Int32>
    [-Descending]
    [-Unique]
    [-InputObject <PSObject>]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]

功能

根据对象的属性值按升序或降序对对象进行排序,并可按属性组合排序。

类型

Cmdlet,属于 Microsoft.PowerShell.Utility。

参数

  • [[-Property] <Object[]>] - 排序依据的属性;支持通配符和计算属性;位置 0
  • -Descending - 按降序排序,默认为升序
  • -Unique - 去除重复项,默认不区分大小写
  • -CaseSensitive - 排序时区分大小写,默认不区分
  • -Stable - 对排序值相等的对象保持输入顺序
  • -Top <Int32> - 只返回排序结果开头的指定数量对象
  • -Bottom <Int32> - 只返回排序结果末尾的指定数量对象
  • -Culture <String> - 指定排序使用的区域设置
  • -InputObject <PSObject> - 要排序的对象,通常通过管道传入

#示例

按默认属性排序

> Get-ChildItem | Sort-Object
  • 未指定属性时,PowerShell 使用对象类型的默认排序属性,文件系统对象通常按 Name 排序。

按指定属性排序

> Get-ChildItem -File | Sort-Object Length
> Get-ChildItem -File | Sort-Object Length -Descending
  • Length 按数值大小排序,-Descending 表示从大到小。

按多个属性排序

> Get-ChildItem -File | Sort-Object Length, Name
  • 先按 Length 排序,长度相同时再按 Name 排序。

为不同属性指定排序方向

> Get-Service | Sort-Object -Property @{Expression='Status'; Descending=$true},
    @{Expression='DisplayName'; Descending=$false}
  • 哈希表中的 Expression 指定属性,Descending 指定该属性的排序方向。

去除重复项

> 'b', 'a', 'B', 'a' | Sort-Object -Unique
a
b
  • -Unique 默认不区分大小写,因此 b 与 B 只保留一个。

只取排序后的前几项

> Get-Process | Sort-Object WS -Descending | Select-Object -First 5
> Get-Process | Sort-Object WS -Top 5
  • -Top 和 -Bottom 是 PowerShell 6 起提供的快捷方式。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2