Powershell - Ausgabe gruppieren - gleichzeitig Werte in anderer Spalte addieren
Hallo zusammen,
ich glaube ich habe gerade eine Denkblockade. Wir arbeiten mit einem Client Management Tool, aus dem wir Inventory Daten auslesen.
Leider ist diese Ausgabe sehr unübersichtlich, da für jede gefundene Versionsnummer ein eigener Eintrag angelegt wird.
Die Ausgabe ist in folgendem Schema aufgebaut:
Hersteller | Name | Version | Anzahl der Installationen
Adobe | Flash | 14.1 | 22
Adobe | Flash | 14.4 | 18
Adobe | Flash | 14.5 | 10
Microsoft | Office 2010 | 14.0.4763 | 16
Microsoft | Office 2010 | 14.0.7015 | 203
Mein Wunsch:
Hersteller | Name | Version | Anzahl der Installationen
Adobe | Flash | 14.x | 40
Microsoft | Office 2010 | 14.x | 219
Das ganze soll in Powershell realisiert werden,
die abfrage erfolgt über eine SQL abfrage, ein kollege hat bereits eine SQL View gebastelt, leider werden aber die Anzahl der Installationen nicht addiert.
In Powershell kenn ich die Funktion Group-By aber die zählt dann nur die Anzahl der Einträge, addiert mir aber nicht die Anzahl der Installationen
Kann mir jemand einen Tipp geben wie ich sowas machen kann? Ich steh etwas auf dem Schlauch...
Danke schonmal und Grüße
ich glaube ich habe gerade eine Denkblockade. Wir arbeiten mit einem Client Management Tool, aus dem wir Inventory Daten auslesen.
Leider ist diese Ausgabe sehr unübersichtlich, da für jede gefundene Versionsnummer ein eigener Eintrag angelegt wird.
Die Ausgabe ist in folgendem Schema aufgebaut:
Hersteller | Name | Version | Anzahl der Installationen
Adobe | Flash | 14.1 | 22
Adobe | Flash | 14.4 | 18
Adobe | Flash | 14.5 | 10
Microsoft | Office 2010 | 14.0.4763 | 16
Microsoft | Office 2010 | 14.0.7015 | 203
Mein Wunsch:
Hersteller | Name | Version | Anzahl der Installationen
Adobe | Flash | 14.x | 40
Microsoft | Office 2010 | 14.x | 219
Das ganze soll in Powershell realisiert werden,
die abfrage erfolgt über eine SQL abfrage, ein kollege hat bereits eine SQL View gebastelt, leider werden aber die Anzahl der Installationen nicht addiert.
In Powershell kenn ich die Funktion Group-By aber die zählt dann nur die Anzahl der Einträge, addiert mir aber nicht die Anzahl der Installationen
Kann mir jemand einen Tipp geben wie ich sowas machen kann? Ich steh etwas auf dem Schlauch...
Danke schonmal und Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 325315
Url: https://administrator.de/contentid/325315
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Pipe das Object an group-object und addiere in der Gruppe die Spalte Anzahl.
Beispiel (Die Daten am Anfang werden nur für das Beispiel so erstellt, ich gehe davon aus das deine Daten schon als Objekt vorliegen):
Ausgabe:
Gruß mik
Beispiel (Die Daten am Anfang werden nur für das Beispiel so erstellt, ich gehe davon aus das deine Daten schon als Objekt vorliegen):
$data = @"
Hersteller;Name;Version;Anzahl der Installationen
Adobe;Flash;14.1;22
Adobe;Flash;14.4;18
Adobe;Flash;14.5;10
Microsoft;Office 2010;14.0.4763;16
Microsoft;Office 2010;14.0.7015;203
"@ | convertfrom-csv -Delimiter ";"
$data | group {"$($_.Hersteller)_$($_.Name)_$($_.Version.Split('.'))"} | %{
$sum = ($_.Group.'Anzahl der Installationen' | %{[int]$_} | measure -Sum).Sum
$_.Group | select -First 1 | select Hersteller,Name,@{n="Version";e={$_.Version -replace '\..*','.X'}},@{n="Anzahl Installationen";e={$sum}}
}
Ausgabe:
Hersteller Name Version Anzahl Installationen
---------- ---- ------- ---------------------
Adobe Flash 14.X 50
Microsoft Office 2010 14.X 219
Wenn hier nichts mehr kommt, bitte den Beitrag noch als gelöst markieren. Danke.
Moin Affkopf89,
Sprich doch das Ganze, am Besten im Beisein eures Cheffes laut vor dich her.
"Wir haben schon eine SQL-Abfrage für die Detaildaten, jetzt wollen wir das GROUP BY aber mit PowerShell simulieren".
Macht das für dich Sinn?
Ich will nicht falsch verstanden werden - nix gegen mikrotix' Musterlösüng, nix gegen ein GROUP BY per PowerShell, wenn grad kein anderes Werkzeug in der Nähe ist.
Aber wenn doch schon alles per SQL vorbereitet ist (noch dazu als vorhandener View!), warum dann Tool/Prozesswechsel?
Ist doch wohl eine lösbare Aufgabe, auf diesen existierenden View noch ein GROUP BY zusammenzuschroten.
Grüße
Biber
Zitat von @ErHe89:
ich glaube ich habe gerade eine Denkblockade.
...
die abfrage erfolgt über eine SQL abfrage, ein kollege hat bereits eine SQL View gebastelt, leider werden aber die Anzahl der Installationen nicht addiert.
In Powershell kenn ich die Funktion Group-By....
ich glaube ich habe gerade eine Denkblockade.
...
die abfrage erfolgt über eine SQL abfrage, ein kollege hat bereits eine SQL View gebastelt, leider werden aber die Anzahl der Installationen nicht addiert.
In Powershell kenn ich die Funktion Group-By....
Sprich doch das Ganze, am Besten im Beisein eures Cheffes laut vor dich her.
"Wir haben schon eine SQL-Abfrage für die Detaildaten, jetzt wollen wir das GROUP BY aber mit PowerShell simulieren".
Macht das für dich Sinn?
Ich will nicht falsch verstanden werden - nix gegen mikrotix' Musterlösüng, nix gegen ein GROUP BY per PowerShell, wenn grad kein anderes Werkzeug in der Nähe ist.
Aber wenn doch schon alles per SQL vorbereitet ist (noch dazu als vorhandener View!), warum dann Tool/Prozesswechsel?
Ist doch wohl eine lösbare Aufgabe, auf diesen existierenden View noch ein GROUP BY zusammenzuschroten.
Grüße
Biber
Meine Rede ... warum man das nicht direkt mit SQL abfackelt. Vermutlich ist Ihnen in der Zwischenzeit ein Lichtchen aufgegangen . Klappe zu Affe tot
nur ist es eine recht komplexe Geschichte
Eigentlich genau das richtige für den Einsteiger http://www.sqlfiddle.com/#!9/dfae7c/5
[OT]
Moin Affkopf89,
nur als kleiner Tipp für den Montagmorgen...
Wenn dein Kollege am Montag (!) früh (!!) seinen allerersten Arbeitstag in diesem Jahr hat..
Erklär ihm besser nicht mit Hinweis auf diesen Beitrag, wie er ein SELECT mit GROUP BY machen kann.
Frag ihn einfach, ob mal eben was zusammenharken kann, was im Ergebnis so und so aussieht.
Wie oben geschrieben.. die Aufgabe ist lösbar.
Grüße
Biber
[/OT]
Moin Affkopf89,
nur als kleiner Tipp für den Montagmorgen...
Wenn dein Kollege am Montag (!) früh (!!) seinen allerersten Arbeitstag in diesem Jahr hat..
Erklär ihm besser nicht mit Hinweis auf diesen Beitrag, wie er ein SELECT mit GROUP BY machen kann.
Frag ihn einfach, ob mal eben was zusammenharken kann, was im Ergebnis so und so aussieht.
Wie oben geschrieben.. die Aufgabe ist lösbar.
Grüße
Biber
[/OT]
Na dann bitte noch einen Haken dran pappen.