如下说明是翻译
: help Sort-Object
产生的帮助信息
.
译者
: Edengundam(
马涛
)
Sort-Object
大纲
根据对象属性值进行排序
.
语法
Sort-Object [[-property] <Object[]>] [-inputObject <psobject>] [-culture <string>] [-caseSensitive] [-unique] [-descending] [<CommonParameters>]
详细描述
根据对象属性值进行排序
.
你通过参数
Property
指定一个或多个属性用于排序
.
如果指定了多个属性
,
对象首先根据第一个指定的属性进行排序
.
如果此时存在有多个对象在第一个排序属性上有相同的值
(
译者注
:
在排序属性上具有相同值的对象构成组
group.),
则使用额外的属性继续进行排序
.
这种情况下
,
这些组使用第二个指定的排序属性继续排序
.
这个过程一直持续到指定的属性都被处理完或者没有还能分组的对象
.
如果没有指定参数
CaseSensitive,
则排序的比较操作会忽略大小写的差异
.
通过指定参数
Descending
可以改变此
cmdlet
默认按照升序排列的行为
.
参数
Descending
被应用在所有排序属性上
.
如果需要对某些属性进行升序排列
,
某些属性进行降序排列
,
你必须向下面例子一样
,
通过哈希表
(hashtable)
指定他们的属性值
:
@{expression={$_.PropName},Descending=$true}.
指定这个哈希表作为属性值
,
将使此
cmdlet
根据
PropName
属性进行降序排序
.
如果指定了对象上不存在的属性
,
则此对象的属性被命令解释为
NULL
值
.
无论该对象的类型是什么
, NULL
值的对象将被排在所有排序对象的后面
.
如果没有指定任何的排序属性
,
此命令将会根据被排序对象的类型选择默认的排序方法进行排序
.
参数
-property <Object[]>
指定用于排序的一个或多个属性
.
此参数的值可以使类似如下形式
: @{Expression={$_.PropName}; Ascending=$false}
或
@{Expression={$_.PropName}; Ascending=$true}
的哈希表
,
此方法允许你根据脚本块的结果进行排序
,
还能让你为每个属性指定不同的排序顺序
.
强制参数
?
|
false
|
参数位置
?
|
1
|
默认值
|
entire input objects
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-inputObject <psobject>
指定被排序的对象
.
你既可以通过此参数
,
也可以通过管道向此命令传递对象
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
|
允许从管道绑定输入
?
|
true (
根据值
)
|
允许通配符扩展
?
|
false
|
-culture <string>
指定排序时使用的文化
(
译者注
:
单词
culture
我没有找到很合适的翻译
,
一般
culture
带有地域性
,
也就和语言文字息息相关
.
每个地区因为文化差异
,
因此对于各种字符
,
符号的排序规则也有不同
,
因此使用不同文化对相同信息进行排序
,
可能产生不同结果
.
在操作系统中
,
一般就是系统语言设置
. ).
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
Current Culture
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-caseSensitive <SwitchParameter>
指出排序是否考虑大小写
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
False
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-unique <SwitchParameter>
过滤掉排序属性重复的项
(
译者注
:
既每个组中只保留一个对象
,
因为不是稳定排序
,
因此保留对象是不确定的
).
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
False
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
-descending <SwitchParameter>
降序排列排序结果
.
强制参数
?
|
false
|
参数位置
?
|
named
|
默认值
|
False
|
允许从管道绑定输入
?
|
false
|
允许通配符扩展
?
|
false
|
<
公共参数
>
此命令支持公共参数
: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable.
更多信息
,
输入
, "get-help about_commonparameters".
输入类型
Object
返回类型
被排序的对象
注意
排序对象在组中的顺序不一定和输入时顺序一致
.
当对输入待排序对象进行比较时
,
此命令试图调用每个排序属性上的比较方法
.
如果该属性没有实现接口
IComparable,
此命令将会把该值转化为字符串
,
并使用
System.String
的
Compare
方法进行比较
.
更多信息
,
输入
"Get-Help Sort-Object -detailed".
需要技术信息
,
输入
"Get-Help Sort-Object -full".
如果需要为该命令提供多个参数
,
请使用逗号进行分隔
.
例如
, "<parameter-name> <value1>, <value2>".
例
1
C:/PS>get-childitem | sort-object
此命令获得当前目录下的子目录和文件
.
调用
sort-object cmdlet
而没有提供任何参数时
,
此命令按照名称的字母表顺序显示结果
.
Directory: Microsoft.Management.Automation.Core/FileSystem::C:/Ps
Mode LastWriteTime Length Name
----- ------------ ------ ----
-a--- 9/13/2005 4:24 PM 0 0
-a--- 9/6/2005 4:19 PM 12 a.csv
-a--- 9/21/2005 3:49 PM 529 a.Ps
-a--- 8/22/2005 4:14 PM 22 a.pl
-a--- 9/27/2005 10:33 AM 24 a.txt
-a--- 9/15/2005 10:31 AM 398 a.vbs
-a--- 7/21/2005 12:39 PM 37066 a.xml
-a--- 8/28/2005 11:30 PM 5412 a.xslt
-a---10/25/2005 1:59 PM 125 AdamTravel.txt
-a--- 7/21/2005 9:49 AM 59 add2Num.Ps
-a--- 8/29/2005 5:42 PM 7111 add-content.xml
-a--- 9/21/2005 12:46 PM 8771 aliens.Ps
-a--- 8/10/2005 2:10 PM 798 array.xml
-a--- 8/4/2004 5:00 AM 110 AUTORUN.INF
-a--- 9/6/2005 4:20 PM 245 b.csv
例
2
C:/PS>get-childitem | sort-object -property length
此命令按照文件长度升序排列显示当前目录中的文件
(
译者注
:
目录没有该属性
,
进行排序时被设置为
NULL,
排列在输出结果的最后
.).
Mode LastWriteTime Length Name
----- ------------ ------ ----
-a--- 8/17/2005 9:34 AM 0 gps.txt
-a--- 9/13/2005 4:24 PM 0 0
-a--- 8/4/2004 5:00 AM 10 WIN51
-a--- 8/4/2004 5:00 AM 10 WIN51IP
-a--- 8/4/2004 5:00 AM 10 WIN51IP.SP2
-a--- 9/6/2005 4:19 PM 12 a.csv
-a--- 12/10/2005 6:04 PM 22 testfile1.txt
-a--- 12/10/2005 6:04 PM 22 test1.txt
...
例
3
C:/PS>get-process | sort-object -property WS | select-object -last 5
此命令首先是用
get-process
cmdlet
获得进行所有列表传递给
sort-object,
根据工作集属性进行排序
(WS).
结果通过管道传递给
select-object
显示最后
5
个进程
.
由于
sort-object returns
返回升序排列的列表
,
因此得出占用最多内存的进程
.
默然显示使用为表格格式
.
Handles NPM(K)PM(K) WS(K) VS(M) CPU(s) Id ProcessName
------- ----------- ----- ----- ------ -- -----------
2754 19526748 38960 182 129.48 1292 svchost
773 1925108 41604 136 161.38 2956 explorer
557 1723864 50600 256 49.63 4388 WINWORD
1581 6781720 66332 450 1,563.48 3868 INFOPATH
921 1375112 78928 205 46.84 676 Ps
例
4
C:/PS>get-history | sort-object -descending
此命令对
HistoryInfo
对象上的默认键值
id
属性进行降序排序
.
Id CommandLine
-- -----------
51 get-history | sort -descending
50 get-history | sort -descending
49 get-history | sort -descending
48 get-history | sort -descending
47 get-history | sort -descending
46 get-history | sort -descending
45 get-history | sort -descending
44 cd /monad
43 get-childitem | sort-object
42 gci *.txt | Sort-Object @{Expression={$_.LastWriteTime-$_.CreationT...
例
5
C:/PS>get-childitem *.txt | sort-object @{Expression={$_.LastWriteTime-$_.CreationTime}; Ascending=$false} | select-object LastWriteTime, CreationTime
此命令按照文件最后写时间到文件创建时间的时间跨度降序对文本文件进行排序
.
LastWriteTime CreationTime
------------- ------------
2/21/2006 10:22:20 AM 10/3/2005 4:19:40 PM
2/27/2006 8:14:24 AM 2/23/2006 10:41:08 PM
2/24/2006 1:26:19 PM 2/23/2006 11:23:36 PM
1/5/2006 12:01:35 PM 1/5/2006 11:35:30 AM
2/24/2006 9:25:40 AM 2/24/2006 9:22:24 AM
2/24/2006 9:40:01 AM 2/24/2006 9:39:41 AM
2/21/2006 10:21:30 AM 2/21/2006 10:21:30 AM
相关链接
Get-Unique
Compare-Object
ForEach-Object
Group-Object
Measure-Object
New-Object
Select-Object
Tee-Object
Where-Object