使用PowerShell的Group-Object对CSV打印记录分组并汇总总页数
分组后汇总打印总页数的实现方法
你已经完成Full Name和Printer Name两个字段的分组后,直接对每个分组内的Total Pages字段求和即可,具体操作如下:
完整代码示例
如果你是从CSV导入后全流程处理,可直接运行以下代码:
# 导入CSV文件 + 按双字段分组 + 汇总每页总数 Import-Csv -Path "你的打印记录文件路径.csv" -Encoding UTF8 | Group-Object -Property "Full Name", "Printer Name" | ForEach-Object { # 计算当前分组的总打印页数 $pageSum = ($_.Group | Measure-Object -Property "Total Pages" -Sum).Sum # 构造输出的统计对象 [PSCustomObject]@{ "用户姓名" = $_.Values[0] "打印机名称" = $_.Values[1] "总打印页数" = $pageSum } } # 如果需要导出结果到新CSV,可在末尾追加以下代码 # | Export-Csv -Path "月度打印统计报表.csv" -Encoding UTF8 -NoTypeInformation
关键逻辑说明
Group-Object返回的每个分组对象都包含Group属性,存储了该分组下所有的原始打印记录- 用
Measure-Object搭配-Sum参数,可直接对分组内所有记录的Total Pages字段求和 - 如果你已经提前把分组结果存储到了变量(比如
$printGroups),直接遍历该变量即可,逻辑和上述代码中的ForEach-Object部分完全一致
用你给出的示例数据运行上述代码,会得到符合预期的统计结果:
- User One + Printer HP:总页数13
- User One + Printer Dell:总页数5
- User Two + Printer HP:总页数9
内容的提问来源于stack exchange,提问作者user17217066
相关产品推荐
相关产品推荐

