Bij het werken met PowerShell zijn er momenten waarop je moet werken met sets gegevens. We werken met veel bestanden, gebruikersaccounts, virtuele machines en meer. Wanneer je deze verschillende objecten in de console weergeeft, scrollen de objecten één voor één naar beneden op het scherm, zonder rekening te houden met hoe je ze wilt zien. Maar dat is op te lossen! Met behulp van de PowerShell Group-Object
cmdlet kun je objecten groeperen. Deze cmdlet gedraagt zich als de SQL GROUP BY statement.
PowerShell heeft een manier om objecten samen te vatten op basis van hun eigenschappen met behulp van de Powershell Group Object cmdlet. Deze cmdlet stelt de scripter in staat om in één oogopslag veel eigenschappen van objecten te bekijken, gegroepeerd.
Latenn we een hoop objecten van hetzelfde type genereren. Deze objecten kunnen van elk type zijn. Voor deze demonstratie zal ik echter System.ServiceProcess.ServiceController-objecten gebruiken die de Get-Service
cmdlet retourneert.
Om ervoor te zorgen dat Group-Object zoals verwacht werkt, zorg ervoor dat je alleen objecten van hetzelfde type groepeert. Het is belangrijk dat alle objecten dezelfde eigenschappen hebben.
Beheer en rapporteer over Active Directory, Exchange en Microsoft 365 met ManageEngine ADManager Plus. Download de gratis proefversie!
Group-Object zonder parameters
Get-Service
geeft alle services op mijn lokale machine terug. Omdat er hier veel services zijn, kan ik geen idee krijgen van hun status, opstarttype en meer. Ik wil deze services eerst groeperen op basis van hun status. Om deze services te groeperen, zal ik alle service-objecten doorpompen naar de cmdlet Group-Object
van PowerShell en de eigenschap Status
gebruiken.
Merk op dat door alle services naar Powershell Group Object
te leiden, je het aantal kunt krijgen. Niet onbelangrijk, maar wel handig.
Objecten groeperen op basis van één eigenschap
Om ze te groeperen op een specifieke eigenschap (status in dit geval) moet ik Group-Object
vertellen dat ik wil groeperen op een bepaalde objecteigenschap. Dit wordt gedaan door de parameter Property
te gebruiken op Group-Object
.
Nu zijn we bezig! Ik kan nu zien hoeveel services er tegelijk gestopt en actief zijn. Ik kan hetzelfde doen voor StartType
ook.
Filteren van Group-Object Output
Misschien wil ik dieper ingaan en de daadwerkelijke services zien in een of meer van deze groepen. Ik kan deze objecten krijgen door te kijken naar de eigenschap Group
die wordt teruggegeven door de Powershell group object-opdracht. Het Group
-object bevat alle services die zijn gegroepeerd op de waarde van de objecteigenschap. Om alle gestopte services te krijgen als ik groepeer op servicestatus, kan ik de services filteren op basis van de status Stopped
en vervolgens het Group
-object uitvouwen om al die services te zien.
Objecten groeperen op basis van meerdere eigenschappen
Niet alleen kun je objecten op deze manier groeperen op één eigenschap, maar je kunt ook groeperen op meerdere eigenschappen. Misschien wil je alle services zien op basis van hun status en hun starttype. Om dit te doen, hoef ik alleen maar een andere eigenschapsnaam toe te voegen aan de Property
-parameter van Group-Object
.
Door een extra eigenschap toe te voegen, kun je in feite een heleboel “en”-scenario’s creëren en groeperen op zoveel eigenschappen als nodig!
Beheer en Rapporteer Active Directory, Exchange en Microsoft 365 met ManageEngine ADManager Plus. Download de gratis proefversie!
Samenvatting
De Group-Object
cmdlet is een cmdlet die je helpt om vergelijkbare objecten samen te groeperen op basis van een gemeenschappelijke eigenschap. Het groeperen van objecten op deze manier is handig op veel verschillende manieren. Ik hoop dat door een beetje te leren over hoe de Group-Object
cmdlet werkt, je meer ideeën krijgt over hoe je PowerShell-scripts kunt verbeteren en beter kunt maken!
Als je net begint met PowerShell, raad ik je ten zeerste aan om mijn mini-cursus over het bouwen van PowerShell-tools te bekijken!
Source:
https://adamtheautomator.com/powershell-group-object/