PowerShell Select-Object Eenvoudig Gemaakt: Een Beginner’s Gids

PowerShell is een krachtige tool voor het beheren van gegevens, maar biedt vaak ook te veel informatie tegelijkertijd. Zoals je weet, kan te veel informatie overweldigend zijn en moeilijk te doorzoeken. Maak je echter geen zorgen. De PowerShell Select-Object cmdlet komt goed van pas.

In deze tutorial leer je de basisprincipes van de Select-Object cmdlet om resultaten op vele manieren te verfijnen of te filteren.

Lees verder en begin met pijnloos gegevensbeheer!

Vereisten

Deze tutorial omvat hands-on demonstraties. Zorg ervoor dat je een systeem hebt met PowerShell geïnstalleerd om mee te doen. Deze tutorial maakt gebruik van Windows 10 met PowerShell 7, maar elke moderne versie zou ook moeten werken.

Wat is de PowerShell Select-Object cmdlet?

De Select-Object cmdlet vereenvoudigt gegevensbeheer door je in staat te stellen specifieke eigenschappen te selecteren uit een object of dataset. Tegelijkertijd kun je eigenschappen hernoemen of berekende eigenschappen maken op basis van bestaande.

De basis syntaxis van Select-Object is als volgt waar:

Parameter Function
-InputObject Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet.
Property Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas.
Optional Parameters Allows you to refine your selection, such as selecting a certain number of objects or skipping objects.
Select-Object [-InputObject] [Property] [Optional Parameters]

Objecten selecteren op eigenschappen

Aangezien er meer dan een korte introductie nodig is om aan je wens te voldoen om meer te leren over de Select-Object cmdlet, waarom begin je niet met een van de veelvoorkomende gebruiksscenario’s? Start deze tutorial door een specifieke eigenschap van een object te selecteren met de Select-Object cmdlet.

Stel dat je een lijst hebt van processen die op je computer draaien, maar je wilt alleen de namen van elk proces zien. Het specificeren van de Name-eigenschap aan de Select-Object cmdlet zal het trucje doen.

Open PowerShell en voer de onderstaande Get-Process-opdracht uit om een lijst van alle processen alleen (Select-Object) op basis van Name op te halen en af te drukken.

Get-Process | Select-Object Name
Selecting objects by property

Naast lopende processen stelt de Select-Object cmdlet je ook in staat om te werken met een CSV-bestand. Stel dat je een CSV-bestand hebt met veel kolommen, maar slechts een paar nodig hebt. Laat dan de Select-Object cmdlet alleen de relevante kolommen kiezen, zodat je de gegevens kunt manipuleren en analyseren.

Voer nu het volgende commando uit om meerdere eigenschappen te selecteren (Select-Object): Name en CPU (gescheiden door komma’s). Deze functie is handig bij het werken met grote datasets waarbij je alleen bepaalde eigenschappen van elk object nodig hebt.

Bovendien sorteert dit commando ook de lijst met objecten (Sort-Object) in aflopende volgorde met de eigenschap CPU als referentie.

Get-Process | Select-Object Name, CPU | Sort-Object -Descending CPU

Hieronder zie je de processen vermeld, te beginnen met de meest bron-intensieve, Google Chrome (als je die geïnstalleerd hebt).

Selecting multiple properties

Het maken van een berekende eigenschap

Wanneer je op zoek bent naar eigenschappen die beter bij je behoeften passen, overweeg dan het maken van een berekende eigenschap. Waarom? Berekende eigenschappen stellen je in staat om gegevens te manipuleren en te transformeren, bestaande eigenschappen te combineren, wiskundige bewerkingen uit te voeren, of gegevens op een specifieke manier te formatteren.

Om een berekende eigenschap te maken, moet je een nieuwe eigenschapsnaam opgeven en een expressie die definieert hoe de eigenschapswaarde moet worden berekend:

Voer het onderstaande commando uit om het volgende uit te voeren:

  • Haal een lijst op van lopende processen (Get-Process), waarbij alleen de eigenschappen Name en CPU worden geselecteerd.
  • # Maak een nieuwe berekende eigenschap met de Naam Geheugen (MB), die het geheugengebruik van elk proces berekent in megabytes. Het geheugengebruik wordt berekend met behulp van een Expressie die de WorkingSet-eigenschap deelt door 1MB. Elke geldige PowerShell-uitdrukking werkt voor het maken van een berekende eigenschap.
  • # Toont alle opgehaalde actieve processen in -Descending-volgorde op basis van de berekende eigenschap Geheugen (MB).

Get-Process | Select-Object Name, CPU, @{Name="Memory (MB)";Expression={$_.WorkingSet/1MB}} | Sort-Object -Descending "Memory (MB)"
Creating a calculated property

# Uitsluiten van een gespecificeerde eigenschap

# In het echte leven kunnen de resultaten van een Select-Object-opdracht gevoelige informatie bevatten, zoals gebruikersnamen en wachtwoorden. Hoe dit risico te vermijden?

# Om te voorkomen dat gevoelige gegevens worden weergegeven in de uitvoer, voeg de -ExcludeProperty-parameter toe om een gespecificeerde eigenschap uit te sluiten van de uitvoer.

# Voer de volgende opdracht uit om de volgende taken uit te voeren:

  • # Haal een lijst op van alle bestanden en mappen (Get-ChildItem) in de map C:\\ recursief (-Recurse).

#Gerelateerd:Get-ChildItem: Bestanden, Register en Certificaten Lijsten

  • Leid de uitvoer naar de `Select-Object` cmdlet om de eigenschappen `Name`, `Length` en `LastWriteTime` te selecteren.
  • Sluit de eigenschap `FullName` uit (-ExcludeProperty) van de uitvoer. Hierdoor worden de volledige paden niet weergegeven in de uitvoer, wat mogelijk vertrouwelijke informatie bevat.
Get-ChildItem -Path C:\ -Recurse | Select-Object Name, Length, LastWriteTime -ExcludeProperty FullName
Excluding a specified property

Het overslaan van het Eerste of Laatste Aantal Objecten

Wanneer je werkt met enorme datasets, kan het vinden van de benodigde gegevens als zoeken naar een diamant in een kolenmijn zijn. Maar waarom tijd verspillen met het doorzoeken van irrelevante gegevens?

In PowerShell biedt de `Select-Object` cmdlet twee parameters waarmee je respectievelijk het eerste (-Skip) en laatste (-SkipLast) aantal objecten in de uitvoer kunt uitsluiten.

Om te zien hoe het overslaan van meerdere objecten uit een uitvoer werkt:

Voer de onderstaande opdracht uit om alle actieve processen te krijgen (Get-Process) maar sla de eerste 100 objecten over die worden geretourneerd.

Houd er rekening mee dat het aantal overgeslagen objecten is gebaseerd op gehele getallen (positieve gehele getallen zonder decimalen), wat in dit geval 100 is.

Get-Process | Select-Object -Skip 100
Skipping the first 100 objects

Voer nu de volgende opdracht uit om een lijst te krijgen van de inhoud van de werkmap (Get-ChildItem) maar sla de laatste (-SkipLast) 100 objecten over die worden geretourneerd.

Get-ChildItem | Select-Object -SkipLast 100
Skipping the last 100 objects

Het Selecteren van het Eerste of Laatste Aantal Objecten

Naast het overslaan van het eerste en laatste objectnummer, kunt u ook geïnteresseerd zijn in het selecteren van het eerste en laatste objectnummer. De Select-Object cmdlet ondersteunt deze functie met de parameters First en Last, waarmee u de rest kunt overslaan om tijd en middelen te besparen.

Voer de volgende opdracht uit om alle processen op te halen, maar selecteer alleen (Select-Object) de eerste -First 10 objecten die worden geretourneerd.

Get-Process | Select-Object -First 10
Selecting the first 10 objects returned

Voer nu de onderstaande opdracht uit om alle inhoud van de werkmap op te halen (Get-ChildItem), maar selecteer alleen (Select-Object) de laatste -Last 10 objecten die worden geretourneerd.

Get-ChildItem | Select-Object -Last 10
Selecting the last 10 objects returned

Exclusief Selecteren van Unieke Objecten

Bij het werken met grotere datasets zult u duplicaatwaarden tegenkomen die u mogelijk wilt uitsluiten, wat gebruikelijk is. Maar het goede aan de Select-Object cmdlet is dat u duplicaatwaarden niet handmatig hoeft uit te sluiten.

Het toevoegen van de parameter -Unique stelt u in staat om alleen de unieke objecten uit de output te selecteren, waardoor uw analyse wordt gestroomlijnd en de nauwkeurigheid van uw resultaten wordt verbeterd.

Voer de onderstaande opdracht uit om te selecteren (Select-Object) en de eerste -First 2 objecten terug te geven.

"1","1","2","3" | Select-Object -First 2

Hieronder ziet u twee geretourneerde objecten, ongeacht of de andere een duplicaatwaarde is.

Selecting and returning objects with duplicate values

Voer tot slot de volgende opdracht uit om slechts één -Unique waarde terug te geven voor elk van de geselecteerde -First 2 objecten.

"1","1","2","3" | Select-Object -First 2 -Unique

Deze keer kun je alleen het eerste van de eerste twee geselecteerde objecten zien, aangezien de andere gewoon een duplicaatwaarde is. Zoals je ziet, bewijst deze uitvoer dat de -Uniek-parameter handig is om snel eventuele dubbele objecten in je gegevens te verwijderen.

Selecting unique objects exclusively

Conclusie

PowerShell heeft de neiging om een overvloed aan informatie te produceren. Maar in deze tutorial heb je geleerd hoe het PowerShell Select-Object-cmdlet je gegevens helpt te stroomlijnen om alleen de benodigde informatie te zien.

Je hebt gezien hoe verschillende parameters je in staat stellen om gegevens te selecteren en uit te sluiten, vooral dubbele waarden uit een uitvoer. Met het Select-Object-cmdlet hoeft het beheren van grote hoeveelheden gegevens geen ontmoedigende taak te zijn.

Op dit punt kun je snel je resultaten verfijnen om beter geschikt te zijn voor analyse en probleemoplossing. Maar waarom leer je niet hoe je je berekende eigenschappen kunt formatteren om de leesbaarheid en bruikbaarheid te verbeteren?

Source:
https://adamtheautomator.com/powershell-select-object/