[玩转系统] Sort-Object (Microsoft.PowerShell.Utility)
作者:精品下载站 日期:2024-12-14 02:03:23 浏览:16 分类:玩电脑
Sort-Object (Microsoft.PowerShell.Utility)
Sort-Object
模块 :Microsoft.PowerShell.Utility按属性值对对象进行排序。
句法
Sort-Object
[-Stable]
[-Descending]
[-Unique]
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Sort-Object
[-Descending]
[-Unique]
-Top <Int32>
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Sort-Object
[-Descending]
[-Unique]
-Bottom <Int32>
[-InputObject <PSObject>]
[[-Property] <Object[]>]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
描述
Sort-Object
cmdlet 根据对象属性值按升序或降序对对象进行排序。如果命令中不包含排序属性,PowerShell 将使用第一个输入对象的默认排序属性。如果输入对象的类型没有默认排序属性,PowerShell 会尝试比较对象本身。有关详细信息,请参阅注释部分。
您可以按单个属性或多个属性对对象进行排序。多个属性使用哈希表按升序、降序或排序顺序的组合进行排序。属性按区分大小写或不区分大小写进行排序。使用Unique参数从输出中删除重复项。
示例
示例1:按名称对当前目录进行排序
此示例对目录中的文件和子目录进行排序。
Get-ChildItem -Path C:\Test | Sort-Object
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 08:55 26 anotherfile.txt
-a---- 2/13/2019 13:26 20 Bfile.txt
-a---- 2/12/2019 15:40 118014 Command.txt
-a---- 2/1/2019 08:43 183 CreateTestFile.ps1
d----- 2/25/2019 18:25 Files
d----- 2/25/2019 18:24 Logs
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
-a---- 2/12/2019 16:24 23 Zsystemlog.log
Get-ChildItem
cmdlet 从 Path 参数指定的目录 C:\Test
获取文件和子目录。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
未指定属性,因此输出按默认排序属性 Name 排序。
示例2:按文件长度对当前目录进行排序
该命令按长度升序显示当前目录下的文件。
Get-ChildItem -Path C:\Test -File | Sort-Object -Property Length
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/13/2019 13:26 20 Bfile.txt
-a---- 2/12/2019 16:24 23 Zsystemlog.log
-a---- 2/13/2019 08:55 26 anotherfile.txt
-ar--- 2/12/2019 14:31 27 ReadOnlyFile.txt
-a---- 2/1/2019 08:43 183 CreateTestFile.ps1
-a---- 2/12/2019 15:40 118014 Command.txt
Get-ChildItem
cmdlet 从 Path 参数指定的目录中获取文件。 File 参数指定 Get-ChildItem
仅获取文件对象。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用Length 参数按长度升序对文件进行排序。
示例 3:按内存使用情况对进程进行排序
此示例根据工作集 (WS) 大小显示内存使用率最高的进程。
Get-Process | Sort-Object -Property WS | Select-Object -Last 5
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
136 193.92 217.11 889.16 87492 8 OUTLOOK
112 347.73 297.02 95.19 106908 8 Teams
206 266.54 323.71 37.17 60620 8 MicrosoftEdgeCP
35 552.19 549.94 131.66 6552 8 Code
0 1.43 595.12 0.00 2780 0 Memory Compression
Get-Process
cmdlet 获取计算机上运行的进程列表。流程对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用Property 参数按WS 对对象进行排序。这些对象沿着管道发送到 Select-Object
cmdlet。 Select-Object
使用Last 参数指定最后五个对象,这些对象是WS 使用率最高的对象。
在 PowerShell 6 中,Sort-Object
参数 Bottom 是 Select-Object
的替代选项。例如,Get-Process |排序对象 -Property WS -Bottom 5。
示例 4:按 Id 对 HistoryInfo 对象进行排序
此命令使用 Id 属性对 PowerShell 会话的 HistoryInfo 对象进行排序。每个 PowerShell 会话都有自己的命令历史记录。
Get-History | Sort-Object -Property Id -Descending
Id CommandLine
-- -----------
10 Get-Command Sort-Object -Syntax
9 $PSVersionTable
8 Get-Command Sort-Object -Syntax
7 Get-Command Sort-Object -ShowCommandInfo
6 Get-ChildItem -Path C:\Test | Sort-Object -Property Length
5 Get-Help Clear-History -online
4 Get-Help Clear-History -full
3 Get-ChildItem | Get-Member
2 Get-Command Sort-Object -Syntax
1 Set-Location C:\Test\
Get-History
cmdlet 从当前 PowerShell 会话中获取历史记录对象。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用 Property 参数按 Id 对对象进行排序。 降序参数将命令历史记录从最新到最旧排序。
示例 5:使用哈希表按升序和降序对属性进行排序
此示例使用两个属性对对象进行排序:Status 和 DisplayName。 状态按降序排序,显示名称按升序排序。
哈希表用于指定Property参数的值。哈希表使用表达式来指定属性名称和排序顺序。有关哈希表的更多信息,请参阅 about_Hash_Tables。
哈希表中使用的Status属性是一个枚举属性。有关更多信息,请参阅ServiceControllerStatus。
Get-Service |
Sort-Object -Property @{Expression = "Status"; Descending = $true},
@{Expression = "DisplayName"; Descending = $false}
Status Name DisplayName
------ ---- -----------
Running Appinfo Application Information
Running BthAvctpSvc AVCTP service
Running BrokerInfrastru... Background Tasks Infrastructure Ser...
Running BDESVC BitLocker Drive Encryption Service
Running CoreMessagingRe... CoreMessaging
Running VaultSvc Credential Manager
Running DsSvc Data Sharing Service
Running Dhcp DHCP Client
...
Stopped ALG Application Layer Gateway Service
Stopped AppMgmt Application Management
Stopped BITS Background Intelligent Transfer Ser...
Stopped wbengine Block Level Backup Engine Service
Stopped BluetoothUserSe... Bluetooth User Support Service_14fb...
Stopped COMSysApp COM+ System Application
Stopped smstsmgr ConfigMgr Task Sequence Agent
Stopped DeviceInstall Device Install Service
Stopped MSDTC Distributed Transaction Coordinator
Get-Service
cmdlet 获取计算机上的服务列表。服务对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用带有哈希表的 Property 参数来指定属性名称和排序顺序。 Property 参数按两个属性排序,Status 按降序排列,DisplayName 按升序排列。
Status 是一个枚举属性。 已停止的值为1,正在运行的值为4。 降序参数设置为$True
,以便正在运行进程显示在已停止进程之前。 DisplayName 将 scending 参数设置为 $False
以按字母顺序对显示名称进行排序。
示例 6:按时间跨度对文本文件进行排序
此命令按 CreationTime 和 LastWriteTime 之间的时间跨度降序对文本文件进行排序。
Get-ChildItem -Path C:\Test\*.txt |
Sort-Object -Property {$_.CreationTime - $_.LastWriteTime} |
Format-Table CreationTime, LastWriteTime, FullName
CreationTime LastWriteTime FullName
------------ ------------- --------
11/21/2018 12:39:01 2/26/2019 08:59:36 C:\Test\test2.txt
12/4/2018 08:29:41 2/26/2019 08:57:05 C:\Test\powershell_list.txt
2/20/2019 08:15:59 2/26/2019 12:09:43 C:\Test\CreateTestFile.txt
2/20/2019 08:15:59 2/26/2019 12:07:41 C:\Test\Command.txt
2/20/2019 08:15:59 2/26/2019 08:57:52 C:\Test\ReadOnlyFile.txt
11/29/2018 15:16:50 12/4/2018 16:16:24 C:\Test\LogData.txt
2/25/2019 18:25:11 2/26/2019 12:08:47 C:\Test\Zsystemlog.txt
2/25/2019 18:25:11 2/26/2019 08:55:33 C:\Test\Bfile.txt
2/26/2019 08:46:59 2/26/2019 12:12:19 C:\Test\LogFile3.txt
Get-ChildItem
cmdlet 使用 Path 参数指定目录 C:\Test
以及所有 *.txt
文件。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用带有脚本块的 Property 参数来确定 CreationTime 和 LastWriteTime 之间的每个文件时间跨度。
示例 7:对文本文件中的名称进行排序
此示例演示如何对文本文件中的列表进行排序。原始文件显示为未排序的列表。 Sort-Object
对内容进行排序,然后使用删除重复项的 Unique 参数对内容进行排序。
# All items unsorted
Get-Content -Path C:\Test\ServerNames.txt
localhost
server01
server25
LOCALHOST
Server19
server3
localhost
# All items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object
localhost
LOCALHOST
localhost
server01
Server19
server25
server3
# Unique filtered items sorted
Get-Content -Path C:\Test\ServerNames.txt | Sort-Object -Unique
localhost
server01
Server19
server25
server3
Get-Content
cmdlet 使用Path 参数指定目录和文件名。文件 ServerNames.txt
包含未排序的计算机名称列表。
Get-Content
cmdlet 使用Path 参数指定目录和文件名。文件 ServerNames.txt
包含未排序的计算机名称列表。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
按默认顺序升序对列表进行排序。
Get-Content
cmdlet 使用Path 参数指定目录和文件名。文件 ServerNames.txt
包含未排序的计算机名称列表。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用Unique 参数删除重复的计算机名称。该列表按默认顺序升序排序。
示例 8:将字符串作为整数排序
此示例演示如何对包含字符串对象的文本文件进行整数排序。您可以将每个命令沿着管道发送到 Get-Member
并验证对象是否是字符串而不是整数。对于这些示例,ProductId.txt
文件包含未排序的产品编号列表。
在第一个示例中,Get-Content
获取文件的内容并将行传输到 Sort-Object
cmdlet。 Sort-Object
按升序对字符串对象进行排序。
# String sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object
0
1
12345
1500
2
2800
3500
4100
500
6200
77
88
99999
# Integer sorted
Get-Content -Path C:\Test\ProductId.txt | Sort-Object {[int]$_}
0
1
2
77
88
500
1500
2800
3500
4100
6200
12345
99999
在第二个示例中,Get-Content
获取文件的内容并将行传输到 Sort-Object
cmdlet。 Sort-Object
使用脚本块将字符串转换为整数。在示例代码中,[int]
将字符串转换为整数,$_
表示管道中的每个字符串。整数对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
按数字顺序对整数对象进行排序。
示例 9:使用稳定排序
当您使用 Top、Bottom 或 Stable 参数时,排序后的对象将按照 Sort- 接收的顺序进行传递。当排序标准相等时对象
。在此示例中,我们按照数字“模 3”的值对 1 到 20 进行排序。模值范围从零到二。
1..20 |Sort-Object {$_ % 3}
18
3
15
6
12
9
1
16
13
10
7
4
19
11
8
14
5
17
2
20
1..20 |Sort-Object {$_ % 3} -Stable
3
6
9
12
15
18
1
4
7
10
13
16
19
2
5
8
11
14
17
20
第一次排序的输出已按模值正确分组,但单个项目未在模数范围内排序。第二种排序使用稳定选项返回稳定排序。
示例 10:按多个属性排序
如果要按多个属性排序,请用逗号分隔属性。
Get-ChildItem -Path C:\Test | Sort-Object Length,Name
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 13/10/2021 22:16 2 File01.txt
-a--- 13/10/2021 22:16 2 File03.txt
-a--- 13/10/2021 22:18 64 File02.txt
-a--- 13/10/2021 22:18 64 File04.txt
Get-ChildItem
cmdlet 从 Path 参数指定的目录中获取文件。这些对象沿着管道发送到 Sort-Object
cmdlet。 Sort-Object
使用Length 和Name 参数按长度升序对文件进行排序。由于 File01.txt
和 File03.txt
具有相同的长度,因此它们将按其属性 Name 进一步排序。
示例 11:按键值对哈希表进行排序
从 PowerShell 6 开始,Sort-Object
支持按键值对哈希表输入进行排序。以下示例根据每个哈希表的 weight
键的值对哈希表数组进行排序。
@(
@{ name = 'a' ; weight = 7 }
@{ name = 'b' ; weight = 1 }
@{ name = 'c' ; weight = 3 }
@{ name = 'd' ; weight = 7 }
) | Sort-Object -Property weight -OutVariable Sorted
$Sorted | ForEach-Object -Process { "{0}: {1}" -f $_.name, $_.weight }
Name Value
---- -----
Weight 1
Name b
Weight 3
Name c
Weight 7
Name a
Weight 7
Name d
b: 1
c: 3
a: 7
d: 7
参数
-Bottom
指定要从已排序对象数组末尾获取的对象数。这会产生稳定的排序。
此参数是在 PowerShell 6.0 中引入的。
类型 :整数32
位置:命名
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
-CaseSensitive
表示排序区分大小写。默认情况下,排序不区分大小写。
类型 :SwitchParameter
位置:命名
默认值:不区分大小写
必需的:False
接受管道输入:False
接受通配符:False
-Culture
指定用于排序的文化配置。使用Get-Culture
显示系统的区域性配置。
String
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Descending
指示 Sort-Object
按降序对对象进行排序。默认为升序。
要使用不同的排序顺序对多个属性进行排序,请使用哈希表。例如,使用哈希表,您可以按升序对一个属性进行排序,并按降序对另一个属性进行排序。
类型 :SwitchParameter
位置:命名
默认值:升序
必需的:False
接受管道输入:False
接受通配符:False
-InputObject
要对对象进行排序,请将它们沿着管道发送到 Sort-Object
。如果您使用 InputObject 参数提交一组项目,Sort-Object
会接收一个代表该集合的对象。由于无法对单个对象进行排序,因此 Sort-Object
返回整个集合不变。
PS对象
位置:命名
默认值:None
必需的:False
接受管道输入:True
接受通配符:False
-Property
指定 Sort-Object
用于对对象进行排序的属性名称。允许使用通配符。对象根据属性值进行排序。如果您未指定属性,Sort-Object
将根据对象类型或对象本身的默认属性进行排序。
使用逗号分隔多个属性。多个属性可以按升序、降序或排序顺序的组合进行排序。当您指定多个属性时,对象将按第一个属性排序。如果多个对象的第一个属性具有相同的值,则这些对象将按第二个属性排序。此过程将持续进行,直到不再有指定的属性或对象组为止。
属性参数的值可以是计算属性。要创建计算属性,请使用脚本块或哈希表。
哈希表的有效键如下:
表达式
-<字符串>
或<脚本块>
升序
或降序
-<boolean>
有关详细信息,请参阅 about_Calculated_Properties。
类型 :Object[]
位置:0
默认值:默认属性
必需的:False
接受管道输入:False
接受通配符:True
-Stable
当排序条件相等时,排序的对象按照接收的顺序进行传递。
此参数是在 PowerShell v6.2.0 中添加的。
类型 :SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Top
指定从已排序对象数组的开头获取的对象数。这会产生稳定的排序。
此参数是在 PowerShell 6.0 中引入的。
类型 :整数32
位置:命名
默认值:None
必需的:True
接受管道输入:False
接受通配符:False
-Unique
指示 Sort-Object
消除重复项并仅返回集合中唯一的成员。唯一值的第一个实例包含在排序的输出中。
唯一不区分大小写。仅字符大小写不同的字符串被视为相同。例如,字符和字符。
类型 :SwitchParameter
位置:命名
默认值:全部
必需的:False
接受管道输入:False
接受通配符:False
输入
PSObject
您可以通过管道将要排序的对象传递给此 cmdlet。
输出
PSObject
此 cmdlet 返回排序后的对象。
笔记
PowerShell 包含以下 Sort-Object
别名:
Windows:
sort
Sort-Object
cmdlet 根据命令中指定的属性或对象类型的默认排序属性对对象进行排序。默认排序属性是使用 types.ps1xml
文件中名为 DefaultKeyPropertySet
的 PropertySet
定义的。有关详细信息,请参阅 about_Types.ps1xml。
如果对象不具有指定属性之一,则该对象的属性值将被 Sort-Object
解释为 Null 并放置在排序顺序的末尾。
当没有可用的排序属性时,PowerShell 会尝试比较对象本身。 Sort-Object
对每个属性使用 Compare 方法。如果属性未实现 IComparable,则 cmdlet 会将属性值转换为字符串,并使用 System.String 的 Compare 方法。有关详细信息,请参阅 PSObject.CompareTo(Object) 方法。
如果您对枚举属性(例如 Status)进行排序,Sort-Object
将按枚举值进行排序。对于 Windows 服务,已停止 的值为 1,正在运行 的值为 4。由于枚举值,已停止 排在正在运行 之前。有关更多信息,请参阅ServiceControllerStatus。
当进行稳定排序时,排序算法的性能会变慢。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag