Group-Object 帮助信息

本文介绍 PowerShell 中 Group-Object 命令的使用方法,该命令可以根据指定属性将对象分组,并创建 GroupInfo 对象来汇总各组的信息。文章详细解释了各个参数的作用,并提供了多个示例来展示如何应用此命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下说明是翻译PowerShell: help Group-Object 产生的帮助信息.
译者: Edengundam(马涛)
 
Group-Object
 
大纲
根据指定的属性, 将包含相同属性值的对象进行分组.
 
语法
Group-Object [[-property] <Object[]>] [-caseSensitive] [-noElement] [-culture <string>] [-inputObject <psobject>] [<CommonParameters>]
 
详细描述
根据指定的属性, 将包含相同属性值的对象进行分组. 默认情况下, 命令将会根据参数Property指定的属性, 将具有相同值的对象分成一组, 并为每一组对象创建GroupInfo对象. GroupInfo包含group属性, 此属性是所有属于此分组的对象的集合. 分组成员数存放在对应的GroupInfo对象上的Count属性中, 分组的名称是根据这些对象的公共值命名的.
 
要忽略结果中的输入对象, 通过指定参数NoElement. 此时结果将是一组GroupInfoNoElement对象, 每个对象的属性Group为空. 默认情况下, 简历分组时的比较操作是忽略大小写的. 你可以通过指定参数CaseSensitive来改变此行为.
 
参数
 
-property <Object[]>
指定对输入对象进行分组的属性或属性列表(译注: 既多个属性, 类似数据库中Group By子句).
 
强制参数?
false
参数位置?
1
默认值
 
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-caseSensitive <SwitchParameter>
指定在分组过程中, 在进行属性值比较时需要区分大小写.
 
强制参数?
false
参数位置?
named
默认值
False
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-noElement <SwitchParameter>
确定输出的分组对象是否包含输入的对象.
 
强制参数?
false
参数位置?
named
默认值
 
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-culture <string>
指定在执行字符串比较时使用的区域设置.
 
强制参数?
false
参数位置?
named
默认值
Current Culture
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-inputObject <psobject>
制定进行分组的对象. 输入一个包含对象的变量, 或者一个能够产生对象的命令或表达式.
 
强制参数?
false
参数位置?
named
默认值
 
允许从管道绑定输入?
true (根据值)
允许通配符扩展?
false
 
<公共参数>
此命令支持公共参数: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 更多信息, 输入, "get-help about_commonparameters".
 
输入类型
Object stream
 
返回类型
Objects
 
注意
 
Group-Object不要求分组的对象必须是一个类型. 当对不同类型对象进行分组时, 此命令使用下述规则进行.
 
属性名称和类型相同: 如果所有的对象都具有指定的属性, 并且这些属性具有相同的类型, 则使用与处理相同类型的对象一样的规则进行分组.
 
属性名相同, 类型不相同: 如果不同的对象包含了指定的属性名称, 但是这些这些属性的类型不完全相同, 那么在一组中第一个被处理的对象的类型作为此属性的基本类型. 当遇到一个不同类型的对象时, 则该值被转换成每组的基本类型. 如果类型转换失败, 则该对象不匹配该组.
 
缺少属性: 不包含指定属性的对象被认为是不可能分组. 不可分组的对象也出现在最后的GroupInfo对象中, 此分组名为AutomationNull.Value.
 
1
 
C:/PS>get-childitem *.doc | group-object -property length
 
此命令将会显示当前位置下扩展名为.doc的文件列表, 并按照文件长度进行分组.
 
2
 
C:/PS>get-childitem | sort-object -property extension | group-object -property extension
 
此命令将会显示当前位置下的文件, 按照文件扩展名进行排序并分组. 注意排序操作在分组操作之前执行.
 
3
 
C:/PS>1..35 | group-object -property {$_ % 2},{$_ % 3}
 
此命令显示从135的整数, 并且按照他们除以23的余数进行分组. 它揭示了cmdlet能够允许多个脚本块作为输入.
 
4
 
C:/PS>$events = get-eventlog -logname system -newest 1000
$events | group-object -property eventID
 
此命令按照事件ID进行分组, 显示最近的1000项系统事件日志. 它使用Get-EventLog cmdlet获取事件, 并将它们存储在变量$events. 第二行中, 它将存储的事件通过管道发送给Group-Object cmdlet, 通过参数Property来指定这些事件应该根据他们的eventID属性进行分组. 输出中, Count表示了每组中的项数, Name表示定义每个分组的EventID , Group表示了每组所包含的输入对象的数组.
 
Count Name  Group
----- ----  -----
247   7036  {FABRIKAM, FABRIKAM, FABRIKAM,..
361   30    {FABRIKAM, FABRIKAM, FABRIKAM,..
 
5
 
C:/PS>get-process | group-object -property company -noelement
 
此命令显示计算机上的所有进程列表, 并根据进程关联的应用程序开发公司名称进行分组. 因为制定了参数NoElement, 此命令返回的对象不包括被分组的进程对象.
 
6
 
C:/PS>get-eventlog -logname system -newest 1000 |
group-object -property {$_.TimeWritten - $_.TimeGenerated}
 
此命令显示最近的1000项系统事件日志, 并根据该日志事件被记录的时间和事件发生时间之间时间差分组. 命令使用了Get-EventLog cmdlet取得日志项, 并通过管道将它们发送给Group-Object cmdlet. 参数Property的值, 是通过一个脚本块指定的(使用花括号括起来的表达式). 脚本块求值的结果是该日志事件被记录的时间和事件发生时间之间时间差. 该值被用来对最近的1000项日志进行分组. 此命令揭示了你能够为参数Property的值提供一个脚本块.
 
7
 
C:/PS>get-childitem | group-object extension -noelement
 
此命令确定当前目录下有哪些扩展名, 但是不在分组结果中包含任意的文件对象.
 
8
 
C:/PS>$events = get-eventlog -logname application -newest 500
$groups = group-object -inputobject $events -property entrytype,source
$groups | get-member
$groups | select-object -expandproperty group
 
此命令创建表示对应用程序事件日进行分组的GroupInfo对象. Get-EventLog cmdlet用来获取最近的500项应用程序事件日志, 并存储到变量$events. 变量$events作为输入传递给Group-Object cmdlet, 并根据项的类型和事件源进行分组, 将作为结果的分组对象存储到变量$groups. 变量$groups通过管道传递给Get-Member cmdlet来显示关于它的信息. 命令的最后一行, 变量$groups通过管道传送给Select-Object cmdlet. 参数ExpandProperty用来显示变量$groupsGroupInfo对象上group属性中的事件信息.
 
相关链接
Sort-Object
Measure-Object
New-Object
Select-Object
ForEach-Object
Where-Object
Compare-Object
Tee-Object
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值