#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>- 要排序的对象,通常通过管道传入
对多个属性使用不同排序方向时,可将
-Property写成哈希表数组,例如@{Expression='Status'; Descending=$true}。
#示例
按默认属性排序
> 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 起提供的快捷方式。