【问题标题】:Combine Duplicate Items in a PSObject合并 PSObject 中的重复项
【发布时间】:2019-11-10 00:57:59
【问题描述】:

我在 PowerShell 对象中有几个相似的项目,我想将它们组合成一个基于 2 列和第三列总和的唯一列表。

我的数据看起来像这样。Before

我希望它最终看起来像这样After

这是我创建对象时的代码。它是通过 CSV 的 foreach 循环的一部分。

$MSFTAdd = New-Object psobject -Property @{
"Client" = $MClientsubs.CustomerName
"SubscriptionName" = $MClientsubs.OfferName
"MicrosoftCount" = $MClientSubs.Quantity
}

$CustomMicrosoft += $MSFTAdd
}

【问题讨论】:

  • Group-Object cmdlet 可以按多个属性进行分组。 [咧嘴一笑]

标签: powershell


【解决方案1】:

csv 有样本数据,下面是合并重复行的脚本

Import-Csv "testing.csv"|
Group-Object Client,SubscriptionName |
Select-Object @{Name='Client'   ;Expression={$_.Values[0]}},
              @{Name='SubscriptionName';Expression={$_.Values[1]}},
              @{Name='MicrosoftCount'  ;Expression={
                  ($_.Group|Measure-Object MicrosoftCount -Sum).Sum
                }}
              @{Name='MicrosoftAmount' ;Expression ={
                  ($_.Group|Measure-Object MicrosoftAmount -Sum).Sum)
              }} | Export-Csv ".\testing_new.csv"

【讨论】:

  • 谢谢,我怎样才能合并另一个名为“金额”的列也应该相加?
  • 只需使用新列“MicrosoftAmount”更新您的 CSV 文件,后跟金额/值。只是我已经根据您的要求更新了上面的代码。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2015-11-29
  • 2013-04-23
  • 1970-01-01
相关资源
最近更新 更多