Group-Object 帮助信息

如下说明是翻译 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}
 
此命令显示从 1 35 的整数 , 并且按照他们除以 2 3 的余数进行分组 . 它揭示了 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 用来显示变量 $groups GroupInfo 对象上 group 属性中的事件信息 .
 
相关链接
Sort-Object
Measure-Object
New-Object
Select-Object
ForEach-Object
Where-Object
Compare-Object
Tee-Object
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值