PowerShell Basisgids

PowerShell

Basisgids voor scripting en automatisering


1. Starten en output tonen

PowerShell gebruik je om taken te automatiseren. Je toont output met Write-Host of Write-Output.

Write-Host "Hallo wereld"
Write-Output 42
Write-Host "Ik ben" 25 "jaar oud"

Write-Host toont direct tekst op het scherm. Write-Output geeft data door aan de pipeline.


2. Variabelen en types

Variabelen beginnen altijd met een dollar teken. PowerShell bepaalt zelf het type.

$naam = "Bastiaan"
$leeftijd = 25
$lengte = 1.82
$isStudent = $true

Write-Host $naam
Write-Host $leeftijd

Het type van een variabele bekijken.

$leeftijd.GetType()
$naam.GetType()

3. Strings

Strings zijn teksten. Je kunt variabelen direct in een string gebruiken.

$naam = "Bastiaan"
$leeftijd = 25
Write-Host "Hoi $naam, je bent $leeftijd jaar"

Handige string bewerkingen.

$tekst = "  nijmegen is mooi  "
$tekst.Trim()
$tekst.ToUpper()
$tekst.Replace("mooi", "leuk")

4. Arrays

Een array bevat meerdere waarden. Je gebruikt indexen om items op te halen.

$cijfers = 7, 8, 5.5, 9
Write-Host $cijfers[0]
Write-Host $cijfers[-1]
$cijfers += 10
Write-Host $cijfers

Door een array loopen.

foreach ($cijfer in $cijfers) {
    Write-Host $cijfer
}

5. Loops

For-loop gebruik je als je het aantal herhalingen weet.

for ($i = 1; $i -le 5; $i++) {
    Write-Host $i
}

While-loop gebruik je zolang een voorwaarde waar is.

$teller = 0
while ($teller -lt 5) {
    Write-Host $teller
    $teller++
}

6. If en else

Met if controleer je een voorwaarde. PowerShell gebruikt vergelijkingsoperatoren zoals -ge en -lt.

$score = 7

if ($score -ge 5.5) {
    Write-Host "Voldoende"
}
else {
    Write-Host "Onvoldoende"
}

7. Functies

Functies zorgen voor herbruikbare code.

function Groet($naam) {
    Write-Host "Hoi $naam"
}

Groet "Bastiaan"

Functie met return waarde.

function Som($a, $b) {
    return $a + $b
}

Write-Host (Som 5 7)

8. Bestanden lezen en schrijven

PowerShell werkt veel met bestanden.

"Hallo bestand" | Out-File "bestand.txt"
Get-Content "bestand.txt"
"Nieuwe regel" | Add-Content "bestand.txt"

9. Fouten afhandelen

Met try en catch voorkom je dat scripts crashen.

try {
    $getal = Read-Host "Getal"
    $getal = [int]$getal
    Write-Host (10 / $getal)
}
catch [System.FormatException] {
    Write-Host "Geen geldig getal"
}
catch [System.DivideByZeroException] {
    Write-Host "Delen door nul kan niet"
}

10. Voorbeeld CPU en RAM uitlezen

Dit script toont CPU en geheugen gebruik.

Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 5 Name, CPU, WorkingSet

11. Mini-tool random wachtwoordgenerator

Dit script maakt een willekeurig wachtwoord.

function Gen-Pass($lengte) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%"
    $pass = ""

    for ($i = 0; $i -lt $lengte; $i++) {
        $pass += $chars[(Get-Random -Minimum 0 -Maximum $chars.Length)]
    }

    return $pass
}

Write-Host (Gen-Pass 12)

12. HashTables

Een HashTable werkt met sleutel en waarde. Vergelijkbaar met dictionaries.

$fruit = @{
    appel = "apple"
    peer = "pear"
    banaan = "banana"
}

Write-Host $fruit["peer"]
$fruit["watermeloen"] = "watermelon"
$fruit.Remove("peer")
$fruit

13. Voorbeeld leeftijd controleren

Dit script vraagt je leeftijd en maakt een keuze.

$leeftijd = Read-Host "Hoe oud ben je?"
$leeftijd = [int]$leeftijd

if ($leeftijd -ge 18) {
    Write-Host "Je mag naar binnen"
}
else {
    Write-Host "Sorry, je bent te jong"
}

14. Pipelines & Objecten

PowerShell werkt met objecten, niet met tekst zoals Bash.

Get-Process | Where-Object {$_.CPU -gt 10} | Sort-Object CPU -Descending

Belangrijk in examens:
Objecten doorgeven via de pipeline
Properties gebruiken ($_. )
Sorteren, filteren, selecteren


15. Modules importeren

Veel opdrachten vereisen modules.

Import-Module ActiveDirectory
Get-Module -ListAvailable

Examenvragen:
Wat is een module
Hoe laad je een module
Hoe controleer je of een module bestaat


16. Werken met Services

Get-Service
Restart-Service -Name Spooler
Stop-Service -Name wuauserv

Typische examenvraag:
"Schrijf een script dat controleert of een service draait. Zo niet, start hem."


17. Processen beheren

Get-Process
Stop-Process -Name notepad
Start-Process "notepad.exe"

Examenvraag:
"Stop alle Chrome‑processen die meer dan 500MB RAM gebruiken."


18. Registry lezen & schrijven

Get-Item "HKLM:\Software"
Set-ItemProperty -Path "HKCU:\Software\Test" -Name "Waarde" -Value 1

Veel MBO‑4 examens testen dit omdat het beheer‑gericht is.


19. WMI / CIM gebruiken

Get-CimInstance Win32_OperatingSystem
Get-WmiObject Win32_LogicalDisk

Examenvraag:
"Haal de vrije schijfruimte op van alle drives."


20. Netwerkopdrachten

Test-Connection google.com
Get-NetIPAddress
Get-NetAdapter

Examenvraag:
"Schrijf een script dat controleert of een server bereikbaar is."


21. CSV‑bestanden verwerken

$data = Import-Csv "gebruikers.csv"
$data | Where-Object {$_.Department -eq "ICT"}

Examenvraag:
"Lees een CSV in en toon alleen gebruikers uit afdeling X."


22. JSON verwerken

$json = Get-Content "config.json" | ConvertFrom-Json
Write-Host $json.server.name

Steeds vaker in examens omdat API's en configs JSON gebruiken.


(Alleen als AD‑module aanwezig is)

Get-ADUser -Filter *
New-ADUser -Name "Jan Jansen" -AccountPassword (ConvertTo-SecureString "Welkom01" -AsPlainText -Force)

Examenvraag:
"Maak 10 gebruikers aan vanuit een CSV."


24. Scriptparameters & switches

param(
    [string]$Naam,
    [switch]$Verbose)

Examenvraag:
"Maak een script dat een naam als parameter accepteert."


25. Logging & transcript

Start-Transcript -Path "log.txt"
Stop-Transcript

Examenvraag:
"Log alle output van het script naar een bestand."


26. Scheduled Tasks

Register-ScheduledTask -TaskName "Backup" -Action $action -Trigger $trigger

Examenvraag:
"Maak een taak die elke dag om 12:00 een script draait."


27. Error handling met Try/Catch/Finally

Je had al basisfouten, maar examens testen vaak:
meerdere catch‑blokken
finally‑blok
custom error messages


28. Security & Credentials

$cred = Get-Credential
Invoke-Command -ComputerName Server01 -Credential $cred -ScriptBlock { Get-Service }

Examenvraag:
"Voer een opdracht uit op een remote server."


29. Remoting

Enter-PSSession Server01
Invoke-Command -ComputerName Server01 -ScriptBlock { hostname }

Veel MBO‑4 examens testen dit omdat het hoort bij systeembeheer.