Bij het voor het eerst tegenkomen van hashtabellen, vraag je je misschien af wat ze zijn en hoe ze een cruciale rol spelen in je scripts of commando’s. Maak je geen zorgen! Deze tutorial behandelt alles om aan de slag te gaan met het gebruik van PowerShell hashtabellen.
Kortom, hashtabellen stellen je in staat om gegevens op te slaan en te manipuleren met behulp van sleutel-waardeparen, die snel en efficiënt kunnen worden benaderd. En in deze tutorial leer je de basisprincipes van hashtabellen en hoe je ze kunt gebruiken voor je PowerShell-scripts en -commando’s.
Lees verder en begin je vaardigheden uit te breiden met PowerShell hashtabellen!
Vereisten
Deze tutorial zal een praktische demonstratie zijn. Zorg ervoor dat je een systeem hebt met PowerShell v5+ geïnstalleerd en geconfigureerd om mee te doen. Deze tutorial gebruikt Windows 10 met PowerShell 7, maar andere versies van PowerShell en Windows zullen ook werken.
Het maken van een PowerShell-hashtable
Het ophalen van specifieke gegevens kan op een gegeven moment veranderen in “zoeken naar een speld in een hooiberg” situatie. Maar met hashtabellen kun je snel specifieke items zoeken in een uitgebreide gegevensverzameling.
In PowerShell zijn hashtabellen flexibele gegevensstructuren die op veel manieren worden gebruikt, zoals het opslaan van configuratiegegevens, het doorgeven van argumenten aan cmdlets en het opslaan van gegevens in een script.
Om te zien hoe een PowerShell-hashtable werkt, moet je er eerst een maken als volgt:
1. Open een PowerShell-sessie en voer de volgende opdracht uit, die geen uitvoer genereert maar een variabele genaamd name
declareert om te verwijzen naar een lege hashtable.
Zoals hieronder te zien is, worden hashtables in PowerShell op een vergelijkbare manier gedefinieerd als arrays, met het symbool @
.
2. Voer vervolgens de onderstaande opdracht uit om het type van de variabele name
te controleren (GetType()
).
Het type van de variabele name
is Hashtable, zoals hieronder weergegeven. Deze informatie bevestigt dat je hashtable succesvol is aangemaakt.

3. Na het controleren van je hashtable, voer de volgende code uit om te controleren of de hashtable leeg is of niet.
De onderstaande code bepaalt of de Count
-eigenschap gelijk is aan (-eq
) aan 0
, en geeft een overeenkomstige boodschap weer.
Onderstaand zie je dat de hashtable leeg is, aangezien je deze zojuist hebt aangemaakt, en er geen sleutel-waardeparen zijn gedefinieerd.

Items toevoegen aan een PowerShell-hashtable
Je hebt zojuist een praktisch lege PowerShell-hashtable gemaakt, die alleen nuttig wordt als je items toevoegt. Hoe? Door sleutel-waardeparen aan de hashtable toe te voegen.
Vergelijkbaar met een array, maar in plaats van integers als indices te gebruiken, gebruikt een PowerShell-hashtable sleutels (die elk gegevenstype kunnen zijn) om de waarden te identificeren. Deze functie maakt snelle invoeging, ophaling en verwijdering van items uit de hashtable mogelijk, omdat de sleutel snel de overeenkomstige waarde lokaliseert.
Hieronder staat de syntaxis voor het toevoegen van een sleutel-waardepaar aan een PowerShell-hashtable, waarbij:
$hashtable
– De naam van de hashtable.$key
– De naam van de sleutel, die hoofdletteronafhankelijk is. Bijvoorbeeld, “Voornaam” en “voornaam” zouden als dezelfde sleutel worden beschouwd in een hashtable$value
– De waarde die aan de sleutel moet worden gekoppeld.
Voer de volgende code uit, die geen uitvoer naar de console genereert maar sleutel-waardeparen declareert en deze aan je hashtable ($naam
) toevoegt.
In een hashtable stelt de sleutel je in staat om een hashfunctie uit te voeren, die de sleutel toewijst aan een specifieke locatie in de interne datastructuur van de hashtable.
? Hashtable-waarden kunnen elk type zijn, zoals getallen, strings, arrays, objecten en andere datatypes als waarden in een hashtable.
Voer nu de onderstaande code opnieuw uit om te controleren of je hashtable leeg is.
Zoals hieronder getoond, ontvang je deze keer een bericht dat de hashtable niet leeg is.

Items ophalen uit een PowerShell-hashtable
Stel dat je er zeker van bent dat je hashtable niet leeg is. Hoe weet je welke items er in je hashtable bestaan? Gelukkig kun je ook items uit je hashtable ophalen.
Voer de onderstaande code uit om alle items uit je hashtable op te halen en uit te voeren (Write-Output
) in sleutel-waardeparen, één per regel.`

Voer nu de onderstaande code uit om alle items in een hashtable op te halen en af te drukken (Write-Output
) naar de console.
? Merk op dat je vaak de volgende code zult gebruiken tijdens deze tutorial. Je kunt het kopiëren en plakken van dezelfde code meerdere keren vermijden door een functie te maken, maar dat valt buiten de reikwijdte van deze tutorial.
Deze keer zie je aanwijzingen welke de sleutels en waarden zijn tussen de vermelde items.

Hashtables maken met vooraf gedefinieerde waarden
Tot nu toe heb je alleen gekeken naar het maken van lege hashtables. Maar als je weet dat bepaalde waarden altijd nodig zullen zijn in je hashtable, kun je er een maken met vooraf gedefinieerde waarden.
Hashtables met vooraf gedefinieerde waarden kunnen je tijd besparen en je code efficiënter maken, omdat je de waarden niet later aan de hashtable hoeft toe te voegen.
? Merk op dat het maken van hashtables geen uitvoer oplevert. Maar geen zorgen. In deze tutorial controleer je elke hashtable na de creatie.
1. Voer de onderstaande opdracht uit om een hashtable ($hashtable1
) te maken met drie sleutel-waardeparen.
2. Voer vervolgens de volgende code uit om te controleren of de nieuwe hashtable (hashtable1
) bestaat.
Je zult zien dat de waarden voor elk sleutel-waardepaar zoals verwacht op het scherm worden afgedrukt. Deze uitvoer bevestigt dat de vooraf gedefinieerde waarden op de juiste plaatsen in de hashtable zijn opgeslagen.

3. Voer nu de onderstaande code uit om een hashtable ($hashtable2
) met vooraf gedefinieerde waarden te maken met behulp van een lus (of een array).
4. Voer tot slot de onderstaande code uit om te verifiëren dat de nieuwe hashtable (hashtable2
) succesvol is aangemaakt.
De uitvoer hieronder bevestigt dat de lusmethode werkt bij het maken van een hashtable met vooraf gedefinieerde waarden. Maar omdat de items willekeurig worden vermeld, ga naar het volgende gedeelte voor een oplossing.

Het maken van een Geordende Lijst van Items in Hashtables
Standaard worden de items in een hashtable op geen enkele specifieke volgorde opgeslagen. Maar wat als je een geordende lijst nodig hebt? Je kunt ook een geordende lijst van items in je hashtables maken om gegevens in een specifieke volgorde te rangschikken.
Om een geordende lijst van items in je hashtable te maken, gebruik je het [ordered]
-attribuut als volgt:
1. Voer de volgende code uit om een geordende lijst van items in een hashtable ($hashtable3
) te maken.
2. Voer vervolgens de volgende code uit om te verifiëren dat de geordende lijst van hashtables succesvol is aangemaakt.
Zoals hieronder weergegeven, blijven de vermelde items in de volgorde waarin u ze hebt gedefinieerd toen u de hashtable aanmaakte.
Enkele mogelijke voordelen van het gebruik van een geordende hashtable zijn onder andere:
Benefits | Description |
Easier to read and debug | The elements are displayed in a predictable order, which can be especially useful if you work with many elements of a large hashtable. |
Improved performance | An ordered hashtable can be more efficient when accessing elements frequently in a specific order. |

3. Als laatste, roep uw geordende hashtable ($hashtable3
) aan om verder te bevestigen dat u nog steeds een geordende lijst van items krijgt.
De onderstaande uitvoer bevestigt dat u nog steeds een geordende lijst van items krijgt, ongeacht hoe u uw hashtable benadert.

Bestaande items bijwerken in hashtables
Gegevens veranderen voortdurend en als u bestaande hashtables heeft, is het bijwerken ervan een cruciale taak. Bijvoorbeeld, u gebruikt een hashtable om configuratiewaarden op te slaan. Als dat het geval is, moet u mogelijk de waarde van een sleutel bijwerken als de configuratie verandert.
Om een PowerShell hashtable bij te werken, zal de =
toewijzingsoperator het trucje doen zoals volgt:
1. Voer de onderstaande opdracht uit, die geen uitvoer geeft, maar de waarde van de sleutel Key2
in $hashtable3
bijwerkt naar NewValue2
.
Volgende, voer de onderstaande opdracht uit om een nieuw sleutel-waardepaar (Key4 = NewValue4
) toe te voegen aan de hashtable ($hashtable3
).
Het toevoegen van een nieuw sleutel-waardepaar geeft geen uitvoer zoals bij het bijwerken van bestaande lijsten in hashtables, maar je zult de wijzigingen in de volgende stap verifiëren.
3. Voer de volgende code uit om te controleren of de waarden van de sleutels in je hashtable ($hashtable3
) zijn bijgewerkt.

? In PowerShell moet elke sleutel in een hashtable uniek zijn. Als je probeert een sleutel-waardepaar toe te voegen dat al in de hashtable staat, krijg je een foutmelding zoals hieronder. Om deze fout te vermijden, ga naar de volgende stap.

4. Voer nu de volgende code uit, die de Contains()
-methode gebruikt om te controleren of de sleutel die je probeert toe te voegen al in de hashtable bestaat voordat je het sleutel-waardepaar toevoegt.
Als de nieuwe sleutel niet bestaat, krijg je het onderstaande bericht waarin staat dat de nieuwe sleutel aan de hashtable is toegevoegd.

Anderzijds, zoals hieronder getoond, krijg je een bericht als de sleutel die je probeert al bestaat.

5. Ten slotte, voer de onderstaande code opnieuw uit om alle items in je hashtable ($hashtable3
) op te halen.
Hieronder zie je de nieuw toegevoegde sleutel (Key5) en andere items die je tot nu toe aan de hashtable hebt toegevoegd.

Items verwijderen uit een Hashtable
Te veel items in een hashtable, vooral onnodige, kunnen alleen maar tot verwarring leiden. Het verwijderen van items die niet langer relevant of nodig zijn uit je hashtable zal je helpen.
Stel dat je hashtable een lijst bevat van gebruikers en hun informatie. Als dat zo is, verwijder dan gebruikers uit je hashtable als ze niet langer actief zijn.
Voer de onderstaande code uit om een specifiek item (Key1
) uit je hashtable ($hashtable3
) te verwijderen.
Hieronder wordt de uitvoer afgedrukt met een bericht dat de sleutel is verwijderd. Maar als de sleutel niet bestaat, krijg je een bericht dat de sleutel niet is gevonden.

Voer nu de volgende code uit om alle items in je hashtable te controleren en te verifiëren of het item succesvol is verwijderd.
Onderstaand kunt u verifiëren dat het sleutel-waardepaar met de sleutel ‘Key5’ niet langer bestaat in uw hashtable.

Conclusie
Met een sleutel-waardepaarstructuur en snelle toegang is een PowerShell-hashtable goed geschikt voor het beheren van grote hoeveelheden gegevens in verschillende scenario’s. En in deze tutorial hebt u geleerd hoe u items aan hashtables kunt toevoegen, bijwerken en verwijderen. Dit geeft u de vaardigheden om hashtables effectief te gebruiken in uw scripts.
Waarom brengt u uw recent verworven vaardigheden niet naar een hoger niveau? Overweeg hashtables op te nemen in uw scripts voor meer geavanceerde taken, zoals gegevensmanipulatie en transformatie. Of experimenteer met het combineren van hashtables met andere gegevens structuren in PowerShell, zoals arrays en objecten, om complexere problemen op te lossen?