Powershell - Group-Object Expand и Group снова

У меня есть файл .csv, который я группирую по двум свойствам «DN», «SKU», а затем выполняю сумму по другому свойству «DeliQty». Это работает нормально, и сумма отражается обратно в группу. Однако затем мне нужно перегруппировать только «DN» и записать в отдельные файлы. Я пробовал Select-Object -Expand Group, но это возвращается к исходному содержимому без суммированных строк.

Есть ли способ разгруппировать, сохранив суммированные строки, а затем снова сгруппировать?

      $CSVFiles = Get-ChildItem -Path C:\Scripts\INVENTORY\ASN\IMPORT\ -Filter *.csv

foreach ($csv in $CSVFiles) {
    $group = Import-Csv $csv.FullName | Group-Object DN, SKU
    $group | Where Count -gt 1 | ForEach-Object {
    $_.Group[0].'DeliQty' = ($_.Group | Measure-Object DeliQty -Sum).Sum 
    } 
    }

1 ответ

Вы можете сделать следующее:

      $CSVFiles = Get-ChildItem -Path C:\Scripts\INVENTORY\ASN\IMPORT\ -Filter *.csv

foreach ($csv in $CSVFiles) {
    $group = Import-Csv $csv.FullName | Group-Object DN, SKU | Foreach-Object {
        if ($_.Count -gt 1) {
            $_.Group[0].DeliQty = ($_.Group | Measure-Object DeliQty -Sum).Sum
        }
        $_.Group[0]
    } 
    # outputs summed and single group objects
    $group
}
Другие вопросы по тегам