Powershell - Objekte - Group-Object - tabellarisch
Hi,
ich suche ein Vereinfachung meines Codes. Einen "Einzeiler" o.ä.
Ich erstelle ein Array mit Objekten. Die Daten der Objekte werden aus Textdateien eingelesen.
Bsp.: (vereinfacht)
Nun will ich das Array als Tabelle ausgeben, in welcher die Elemente nach "Gruppe" gruppiert und die Summen je für Vorkommen von "AAA", "BBB", "CCC" usw. in "Wert" ausgegeben werden.
Mittels
bekomme ich es z.B. hin, dass er mir alle Elemente je Gruppenname summiert, bei welchen "Wert" = "AAA" ist. Da kommt dann z.B. raus
Nun will ich aber haben:
Ich habe das jetzt so gelöst, dass ich je Kriterium ("AAA", "BBB", "CCC", ...) eine Auswertung mit "Group-Object" fahre, mit deren Ergebnisse neue Objekte füttere (im Array) und dieses Object-Array dann als Tabelle ausgebe.
Ich hoffe, dass das einfacher geht.
Könnt Ihr mir folgen und hat jemand ne Idee?
E.
ich suche ein Vereinfachung meines Codes. Einen "Einzeiler" o.ä.
Ich erstelle ein Array mit Objekten. Die Daten der Objekte werden aus Textdateien eingelesen.
Bsp.: (vereinfacht)
$O = @()
... for each line ....
$O += New-Object -TypeName PSObject -Property @{
"Gruppe" = $Line.Field1
"Wert" = $Line.Field2
}
... next line
Nun will ich das Array als Tabelle ausgeben, in welcher die Elemente nach "Gruppe" gruppiert und die Summen je für Vorkommen von "AAA", "BBB", "CCC" usw. in "Wert" ausgegeben werden.
Mittels
$0 | ?{ $_.Wert -eq "AAA" } | Group-Object Gruppe | FT Name,Count
Name Count
---- ---
Gruppe1 17
Gruppe2 3
Gruppe3 4
usw.
Nun will ich aber haben:
Name AAA BBB CCC
---- ---
Gruppe1 17 33 8
Gruppe2 3 99 15
Gruppe3 4 24 13
usw.
Ich habe das jetzt so gelöst, dass ich je Kriterium ("AAA", "BBB", "CCC", ...) eine Auswertung mit "Group-Object" fahre, mit deren Ergebnisse neue Objekte füttere (im Array) und dieses Object-Array dann als Tabelle ausgebe.
Ich hoffe, dass das einfacher geht.
Könnt Ihr mir folgen und hat jemand ne Idee?
E.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 385790
Url: https://administrator.de/forum/powershell-objekte-group-object-tabellarisch-385790.html
Ausgedruckt am: 12.04.2025 um 00:04 Uhr
3 Kommentare
Neuester Kommentar
Servus.
Beispiel für dich zum zerpflücken:
Ob das jetzt für dich "einfacher" ist musst du selbst entscheiden
. Das kann man natürlich nach Lust und Laune abwandeln.
Grüße Uwe
Beispiel für dich zum zerpflücken:
# Kriterien
$kriterien = 'AAA','BBB','CCC'
# Beispieldaten
$O = @'
Gruppe;Wert
Gruppe1;AAA
Gruppe1;AAA
Gruppe1;BBB
Gruppe2;CCC
Gruppe2;BBB
Gruppe2;BBB
Gruppe2;BBB
Gruppe3;AAA
Gruppe3;AAA
Gruppe3;CCC
Gruppe4;XXX
'@ | ConvertFrom-CSV -Delimiter ";"
# Hashtable mit Kriterien erstellen (dient zum Erstellen der Object Member)
$cols = @{}; $kriterien | %{$cols.$_ = 0}
# Nach Gruppe gruppieren
$O | group Gruppe -Pipe gruppen | Add-Member -NotePropertyMembers $cols -PassThru | %{
# Items der Gruppe nach Wert gruppieren und nur die übernehmen die in den Kriterien vorhanden sind und die Anzahl in das Object schreiben
$_.Group | group Wert | ?{$_.Name -in $kriterien} | %{$gruppen.($_.Name) = $_.Count}
$_
} | ft (@("Name") + $kriterien)
Grüße Uwe
eventuell könnte Format-Table dabei helfen (ungetestet) ?
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Mayho
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Mayho