再举一例,把当前目录的文件以扩展名进行分组。
PS C:Powershell> ls | Group-Object Extension
Count Name Group
----- ---- -----
2 {ABC, alias}
5 .html {a.html, ls.html, name.html, Powershell_Cmdlets.html...}
2 .txt {a.txt, test.txt}
2 .xml {employee.xml, LogoTestConfig.xml}
2 .ps1 {function.ps1, test.ps1}
1 .bat {ping.bat}
1 .vbs {test.vbs}
使用表达式分组
如果要查看当前目录的文件,根据文件的大小是否大于1kb分组。
PS C:Powershell> ls | Group-Object {$_.Length -gt 1kb}
Count Name Group
----- ---- -----
7 False {ABC, employee.xml, LogoTestConfig.xml, ping...
8 True {a.html, a.txt, alias, function.ps1...}
如果按照文件名的首字母分组
PS C:Powershell> ls | Group-Object {$_.name.SubString(0,1).toUpper()}
Count Name Group
----- ---- -----
3 A {a.html, a.txt, alias}
1 E {employee.xml}
1 F {function.ps1}
2 L {LogoTestConfig.xml, ls.html}
1 N {name.html}
3 P {ping.bat, Powershell_Cmdlets.html, psdrive.html}
3 T {test.ps1, test.txt, test.vbs}
根据当前应用程序的发布者分组
PS C:Powershell> Get-Process | Group-Object Company -NoElement Count Name ----- ---- 2 Adobe Systems Incorpor... 52 2 微软 22 Microsoft Corporation 1 Adobe Systems, Inc. 1 Microsoft (R) Corporation 1 1 NVIDIA Corporation
使用格式化命令分组
Group-Object并不是唯一可以完成分组功能的命令,事实上格式化命令例如Format-Object支持一个GroupBy的参数,也可以完成分组。
PS C:Powershell> Dir | Sort-Object Extension, Name | Format-Table -groupBy Extension 目录: C:Powershell Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2011/11/24 20:26 12060 alias 目录: C:Powershell Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2011/11/28 15:30 63 ping.bat 目录: C:Powershell Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2011/11/24 18:30 67580 a.html -a--- 2011/12/14 11:22 3460 ls.html -a--- 2011/11/24 17:37 7420 name.html -a--- 2011/11/24 17:44 735892 Powershell_Cmdlets.html -a--- 2011/11/30 16:04 2556 psdrive.html










