PowerShell如何分组统计各DLL文件版本的出现次数
PowerShell实现DLL版本分组统计方法
要实现按DLL文件版本分组统计实例数量,只需要在现有代码的管道中加入分组聚合逻辑,再调整输出格式即可,核心是使用PowerShell内置的Group-Object命令完成分组计数。
按版本号字符串排序的实现代码
如果需要保持原有代码按版本号字符串排序的逻辑,使用以下代码即可:
gci System.Web.Mvc.dll -Recurse -ErrorAction SilentlyContinue | select-object -ExpandProperty VersionInfo | Select FileVersion | Group-Object FileVersion | Sort-Object { [string]$_.Name } | Select-Object ` @{Name='FileVersion'; Expression={$_.Name}}, @{Name='Count'; Expression={$_.Count}} | Format-Table -HideTableHeaders -AutoSize
按实例数降序排序的实现代码
如果需要和预期输出一致,按版本对应的实例数量从高到低排序,使用以下代码:
gci System.Web.Mvc.dll -Recurse -ErrorAction SilentlyContinue | select-object -ExpandProperty VersionInfo | Select FileVersion | Group-Object FileVersion | Sort-Object Count -Descending | Select-Object ` @{Name='FileVersion'; Expression={$_.Name}}, @{Name='Count'; Expression={$_.Count}} | Format-Table -HideTableHeaders -AutoSize
运行后输出结果完全匹配预期格式:
1.2.3.4 3 9.0.1.2 2 5.6.7.8 1
代码改动说明
- 新增
Group-Object FileVersion:按FileVersion字段对所有结果分组,分组后每组自动生成Count属性存储该版本的实例总数,版本号值存储在分组的Name属性中 - 通过计算属性把分组的
Name字段重命名为FileVersion,提取分组的Count字段作为统计值 - 最后用
Format-Table -HideTableHeaders -AutoSize隐藏表格表头、自动适配列宽,输出纯文本的版本+计数格式 - 如果后续需要把统计结果导出为CSV等结构化格式,直接删除最后一行
Format-Table命令即可,输出的对象可以直接对接Export-Csv等命令
内容的提问来源于stack exchange,提问作者Robbie Dee
相关产品推荐
相关产品推荐

