Suponho que você tenha Column1
e Column2
médio MailboxName
e PSTsFound
Se você estiver interessado apenas na soma de PSTsFound para todas as linhas com o mesmo MailboxName e não nas linhas individuais, você pode usar um HashTable com o MailboxName como chave e o objeto inteiro como seu valor. Em seguida, na sua iteração, teste se sua HashTable já contém uma determinada chave. Em caso positivo, adicione o valor à entrada existente:
$SumTable = @{}
foreach ($row in $result) {
if($SumTable.ContainsKey($row.MailboxName))
{
$obj = $SumTable[$row.MailboxName]
$obj.PSTsFound += $row.PSTsFound
$obj.Messagesremaining += $row.Messagesremaining
$SumTable[$row.MailboxName] = $obj
}
else
{
$props = @{
'MailboxName' = $row.MailboxName
'PSTsFound' = $row.PSTsFound
'Messagesremaining' = $row.Messagesremaining
}
$obj = New-Object -TypeName PSObject -Property $props
$SumTable.Add($obj.MailboxName,$obj)
}
}
$userPSTs = $SumTable.Values
Se você não deseja modificar a coleção existente, mas apenas deseja produzir a soma, pode utilizar o Group-Object e Cmdlets Measure-Object em esta abordagem brilhante sugerida no StackOverflow :
$userPSTs | Group-Object -Property MailboxName | Foreach-Object {
New-Object PSObject -Property @{
MailboxName = $_.MailboxName
PSTsFound = ($_.Group | Measure-Object -Property PSTsFound -Sum).Sum
Messagesremaining = ($_.Group | Measure-Object -Property Messagesremaining -Sum).Sum
}
}