首页 > 解决方案 > 如何将具有相同名称的多个对象转换为一个具有总和的对象?

问题描述

在这里画一个奇怪的空白,因为我确定我以前做过。我有这些对象:

Name01 Capacity0
------ ---------
P1234       4096
P1234       4096
P1234       4096

我如何把它变成一个只包含所有“容量0”之和的对象?:

Name01 Capacity0
------ ---------
P1234       12288

我知道如何得到总和,例如:

...Select Name01,Capacity0 | Measure-Object -Property Capacity0 -sum

但是如果我像这样管道它,我会失去'name01'属性。

最好的方法是什么?可能带有组对象的东西?挣扎于我应该使用的逻辑。非常感激。

标签: powershell

解决方案


是的,Name01先分组,然后选择分组的 Sum:

... | Select Name01, Capacity0 `
| Group-Object -Property Name01 `
| Select `
    @{Label = "Name01"; Expression={$_.Name}}, 
    @{Label = "Sum"; Expression = {($_.Group | Measure-Object -Property Capacity0 -Sum).Sum}}

结果:

Name01   Sum
------   ---
P1234  12288

推荐阅读