Het leren van PowerShell Sort-Object met Voorbeelden

Het sorteren van gegevens zou geen overdreven taak moeten zijn. Als je op zoek bent naar een efficiënte manier om gegevens te sorteren, staat de PowerShell \code{Sort-Object} cmdlet voor je klaar!

In deze tutorial leer je hoe je de PowerShell \code{Sort-Object} cmdlet kunt gebruiken om gegevens te sorteren, of het nu getallen, strings of objecten zijn.

Zeg vaarwel tegen het constant turen naar je gegevens en sorteer ze efficiënt in PowerShell!

Vereisten

Zorg ervoor dat je een machine hebt met PowerShell 5.0 of later geïnstalleerd om deze tutorial te volgen met de praktijkdemonstraties. Deze tutorial maakt gebruik van Windows 10 met PowerShell 7 geïnstalleerd.

Gegevens sorteren met de PowerShell \code{Sort-Object} cmdlet

Afhankelijk van je behoeften kun je gegevens op verschillende manieren sorteren op basis van één of meer eigenschappen. De \code{Sort-Object} cmdlet stelt je in staat om gegevens te sorteren, bijvoorbeeld in oplopende of aflopende volgorde, om het analyseren en werken met gestructureerde informatie te vergemakkelijken.

De basissyntax van de \code{Sort-Object} cmdlet is als volgt waar:

  • \code{} – Verwijst naar het verzamelen van gegevens om te sorteren, zoals een array, een lijst of andere gegevenstypen.
  • \code{<-Parameter>} – Een optionele parameter om de sorteercriteria op te geven waarmee je kunt aanpassen hoe het sorteren wordt uitgevoerd.
<Object-to-Sort>|Sort-Object <-Parameter>

Om te zien hoe je gegevens kunt sorteren in oplopende en aflopende volgorde:

1. Open PowerShell en voer onderstaand commando uit, dat geen uitvoer geeft maar een lijst met willekeurige gehele getallen definieert in de variabele $numbers.

$numbers = 4, 2, 3, 1, 5

? Merk op dat je in PowerShell niet alleen met getallen en strings werkt, maar met objecten omdat PowerShell een objectgeoriënteerde taal en shell is.

2. Voer vervolgens de volgende commando’s uit om de getallen gedefinieerd in de variabele $numbers te sorteren (Sort-Objects) en weer te geven (Write-Output).

$sortedNumbers = $numbers | Sort-Object
Write-Output $sortedNumbers

Zonder parameters toe te voegen, worden de getallen in oplopende volgorde weergegeven.

Sorting data in ascending order

3. Voer nu dezelfde commando’s uit, maar voeg deze keer de parameter -Descending toe om de getallen in aflopende volgorde te sorteren en weer te geven.

$sortedNumbers = $numbers | Sort-Object -Descending
Write-Output $sortedNumbers

De uitvoer, vergelijkbaar met hieronder, geeft aan dat de getallen in aflopende volgorde zijn gesorteerd.

Sorting numbers in descending order

Het sorteren van gegevens op unieke waarden

Het sorteren van gegevens in oplopende en aflopende volgorde is één ding. Maar er kunnen gevallen zijn waarin je gegevens moet sorteren op basis van unieke waarden. In deze context verwijst “uniek” naar afzonderlijke of niet-herhaalde waarden binnen een dataset.

Om gegevens te sorteren op unieke waarden:

Voer de volgende opdrachten uit om het volgende uit te voeren:

  • Definieer een lijst van gehele getallen (inclusief duplicaten) in de variabele $numbers.
  • Sorteer de getallen op -Unieke waarden in -Aflopend volgorde en sla het resultaat op in de variabele $sortedNumbers.

Bij het sorteren op unieke waarden rangschik je de gegevens zodat elke waarde slechts één keer voorkomt in het gesorteerde resultaat, waardoor duplicaten worden geëlimineerd.

Deze opdrachten geven geen output, maar je zult de gesorteerde gegevens verifiëren in de volgende stap.

$numbers = 4, 2, 3, 3, 1, 5, 2
$sortedNumbers = $numbers | Sort-Object -Unique -Descending

Voer nu de Write-Output opdracht hieronder uit om de inhoud van de variabele $sortedNumbers uit te voeren om het resultaat te verifiëren.

Write-Output $sortedNumbers

Hieronder zijn alle unieke waarden gesorteerd in aflopende volgorde en zijn dubbele waarden geëlimineerd.

Zoals je kunt zien, verbetert het sorteren op unieke waarden de efficiëntie van gegevensanalyse en elimineert het overbodige informatie bij het werken met grote datasets.

Sorting data by unique values

Gegevens sorteren op tekenreeksen

Tot nu toe heb je gezien hoe je numerieke waarden sorteert. Maar wat als je met tekenreeksen werkt? Maak je geen zorgen. De Sort-Object cmdlet stelt je in staat om tekenreekgegevens te ordenen in een specifieke volgorde op basis van sorteercriteria.

In deze context verwijst een string naar een enkel karakter of een reeks karakters, zoals woorden, zinnen of andere tekstuele gegevens. In PowerShell worden strings weergegeven door de tekst tussen aanhalingstekens te plaatsen, ofwel enkel (') of dubbel (").

Voer de volgende opdrachten uit om een array van strings standaard in oplopende (alfabetische) volgorde te sorteren.

Het sorteren van strings in PowerShell biedt flexibiliteit bij het organiseren van tekstuele gegevens in een gewenste volgorde, waardoor efficiënte gegevensmanipulatie en -analyse mogelijk is.

# Definieer een array van strings
$strings = "a", "b", "c" 
# Sorteer de strings standaard in oplopende volgorde (geen parameters)
$sortedStrings = $strings | Sort-Object
# Toon de gesorteerde strings
Write-Output $sortedStrings
Sorting strings in alphabetical order

Voer nu dezelfde opdrachten uit, maar sorteer ze in plaats daarvan in -Descending-volgorde.

# Definieer een array van strings
$strings = "a", "b", "c" 
# Sorteer de strings in dalende volgorde
$sortedStrings = $strings | Sort-Object -Descending
# Toon de gesorteerde strings
Write-Output $sortedStrings

Deze keer zie je de uitvoer in omgekeerde volgorde, zoals hieronder weergegeven.

Sorting strings in the reverse order

Gegevens sorteren op eigenschappen

Zeker, het sorteren van strings is handig. Maar doorgaans moet je specifieker zijn bij het sorteren van gegevens. Naast het sorteren van strings, waarom zou je geen objecten sorteren op basis van hun eigenschappen?

Wanneer u werkt met PowerShell-objecten, heeft elk object doorgaans één of meer eigenschappen die u kunt gebruiken voor sorteren. Deze eigenschappen stellen u in staat om uw sorteercriteria aan te passen aan uw behoeften.

Voer de volgende opdrachten uit om een lijst op te halen van alle actieve processen (Get-Process) op uw systeem en sorteer ze op CPU-gebruik. De parameter -Descending geeft het resultaat weer met de meest intensieve processen als eerste vermeld.

# Haal een verzameling van alle actieve processen op
$processes = Get-Process

# Sorteer de processen op basis van CPU-gebruik in aflopende volgorde
$sortedProcesses = $processes | Sort-Object -Property CPU -Descending

# Selecteer en geef de naam en CPU-eigenschappen van elk proces weer
$sortedProcesses | Select-Object Name, CPU
Sorting data by properties

Het sorteren van hashtabellen

Het sorteren van objecten op eigenschappen is een gamechanger bij het werken met gegevensanalyse. Maar wat als we gegevens willen organiseren in sleutel-waardeparen zoals hashtabellen?

De Sort-Object-cmdlet maakt het mogelijk om hashtabellen te sorteren om de presentatie van gegevens te verbeteren en de informatieopvraging te vereenvoudigen.

Voer de volgende code uit om een hashtabel om te zetten in een array van sleutel-waardeparen en sorteer de hashtabel op basis van de sleutels.

# Maak een hashtabel met drie sleutel-waardeparen
$hashTable = @{
    "C" = "Charlie"
    "A" = "Alpha"
    "B" = "Bravo"
}

# Sorteer de hashtabel op sleutels en sla het gesorteerde resultaat op in $sortedHashTable
$sortedHashTable = $hashTable.GetEnumerator() | Sort-Object -Property Name

# Doorloop elk item in de gesorteerde hashtabel
foreach ($entry in $sortedHashTable) {
    # Geef het sleutel-waardepaar weer
    Write-Output "$($entry.Name): $($entry.Value)"
}

Doordat de sleutels de hashtabel sorteren, zal de uitvoer er als volgt uitzien, waarbij je kunt waarnemen dat de uitvoer sleutel-waardeparen organiseert en weergeeft in een specifieke volgorde.

Deze sorteermethode zorgt voor een betere presentatie van gegevens en maakt het gemakkelijker om informatie uit de hashtabel op te halen.

Sorting hash tables

Conclusie

Gedurende deze handleiding heb je geleerd hoe je unieke waarden, strings, getallen, processen en zelfs hashtabellen kunt sorteren met de Sort-Object cmdlet van PowerShell. Het sorteren van gegevens is een taak die de weg vrijmaakt voor meer inzichtelijke gegevensanalyse, en met de PowerShell Sort-Object cmdlet ben je op de goede weg.

Gewapend met deze nieuwe kennis kun je er nu voor zorgen dat je gegevens op een zinvolle manier zijn georganiseerd en deze zelfverzekerd aan anderen kunt presenteren.

Sorteren is slechts een van de vele waardevolle mogelijkheden van PowerShell en zijn cmdlets. Waarom breidt u uw vaardigheden niet uit door meer te leren over andere cmdlets? Misschien kunt u programma-logs maken met Tee-Object of objectgroottes meten met Measure-Object?

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