Bei der Arbeit mit PowerShell gibt es Zeiten, in denen Sie mit Datensätzen arbeiten müssen. Wir arbeiten mit vielen Dateien, Benutzerkonten, virtuellen Maschinen und mehr. Wenn Sie diese verschiedenen Objekte in der Konsole anzeigen, scrollen die Objekte nacheinander über den Bildschirm, ohne Rücksicht darauf, wie Sie sie sehen möchten. Aber das lässt sich beheben! Mit dem PowerShell-Group-Object
-Cmdlet können Sie Objekte gruppieren. Dieses Cmdlet fungiert wie die SQL GROUP BY-Anweisung.
PowerShell bietet eine Möglichkeit, Objekte nach ihren Eigenschaften mithilfe des PowerShell-Gruppenobjekt-Cmdlets zusammenzufassen. Dieses Cmdlet ermöglicht es dem Skriptautor, einen Überblick über viele Objekteigenschaften auf einmal in Gruppen zu erhalten.
Generieren wir eine Reihe von Objekten desselben Typs. Diese Objekte können beliebigen Typs sein. Für diese Demonstration verwende ich jedoch System.ServiceProcess.ServiceController-Objekte, die das Get-Service
-Cmdlet zurückgibt.
Um sicherzustellen, dass Group-Object wie erwartet funktioniert, stellen Sie sicher, dass Sie nur Objekte desselben Typs gruppieren. Es ist wichtig, dass alle Objekte dieselben Eigenschaften haben.
Verwalten und Berichten Sie über Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Laden Sie die kostenlose Testversion herunter!
Group-Object ohne Parameter
Get-Service
gibt alle Dienste auf meinem lokalen Computer zurück. Da es hier viele Dienste gibt, kann ich mir keinen Überblick über ihren Status, den Starttyp und mehr verschaffen. Ich möchte diese Dienste zuerst nach ihrem Status gruppieren. Um diese Dienste zu gruppieren, leite ich alle Dienstobjekte an das PowerShell-Cmdlet Group-Object
weiter und verwende die Status
-Eigenschaft.
Beachten Sie, dass durch das Leiten aller Dienste an Powershell Group Object
Sie die Anzahl erhalten können. Großes Ding, aber nützlich.
Objekte nach einer einzelnen Eigenschaft gruppieren
Um sie nach einer bestimmten Eigenschaft zu gruppieren (in diesem Fall Status), muss ich Group-Object
sagen, dass ich nach einer bestimmten Objekteigenschaft gruppieren möchte. Das wird durch Verwendung des Property
-Parameters auf Group-Object
erreicht.
Jetzt wird’s interessant! Ich kann jetzt sehen, wie viele Dienste gleichzeitig angehalten und ausgeführt werden. Das Gleiche kann ich auch für StartType
tun.
Filterung der Ausgabe von Group-Object
Vielleicht möchte ich genauer hinschauen und die tatsächlichen Dienste in einer oder mehreren dieser Gruppen sehen. Ich kann diese Objekte erhalten, indem ich die Group
-Eigenschaft betrachte, die vom PowerShell-Gruppenobjekt-Befehl zurückgegeben wird. Das Group
-Objekt enthält alle Dienste, die nach dem gruppierten Objekteigenschaftswert gruppiert sind. Um alle angehaltenen Dienste zu erhalten, wenn ich nach dem Dienststatus gruppieren, kann ich die Dienste nach dem Status Stopped
filtern und dann das Group
-Objekt erweitern, um all diese Dienste zu sehen.
Objekte nach mehreren Eigenschaften gruppieren
Nicht nur, dass Sie Objekte auf einer einzigen Eigenschaft gruppieren können, sondern Sie können sie auch auf mehreren Eigenschaften gruppieren. Vielleicht möchten Sie alle Dienste basierend auf ihrem Status und ihrem Starttyp sehen. Um dies zu tun, muss ich einfach einen weiteren Eigenschaftsnamen zum Property
-Parameter von Group-Object
hinzufügen.
Sie können sehen, dass durch das Hinzufügen einer zusätzlichen Eigenschaft im Grunde genommen eine Vielzahl von „und“-Szenarien erstellt werden können und je nach Bedarf auf beliebig viele Eigenschaften gruppiert werden kann!
Verwalten und Berichten Sie über Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Kostenlose Testversion herunterladen!
Zusammenfassung
Der Group-Object
-Cmdlet ist ein Cmdlet, das Ihnen hilft, ähnliche Objekte basierend auf einer gemeinsamen Eigenschaft zusammenzufassen. Das Gruppieren von Objekten auf diese Weise ist auf viele verschiedene Arten nützlich. Ich hoffe, dass Sie durch das Kennenlernen des Group-Object
-Cmdlets einige Ideen bekommen, wie Sie PowerShell-Skripte verbessern und besser erstellen können!
Wenn Sie gerade erst mit PowerShell anfangen, ermutige ich Sie sehr, meinen Mini-Kurs zum Erstellen von PowerShell-Tools anzusehen!
Source:
https://adamtheautomator.com/powershell-group-object/