PowerShell
Basisgids voor scripting en automatisering
Inhoudsopgave
- 1. Starten en output tonen
- 2. Variabelen en types
- 3. Strings
- 4. Arrays
- 5. Loops
- 6. If en else
- 7. Functies
- 8. Bestanden lezen en schrijven
- 9. Fouten afhandelen
- 10. CPU en RAM uitlezen
- 11. Random wachtwoordgenerator
- 12. HashTables
- 13. Leeftijd controleren
- 14. Pipelines & Objecten
- 15. Modules importeren
- 16. Werken met Services
- 17. Processen beheren
- 18. Registry lezen & schrijven
- 19. WMI / CIM gebruiken
- 20. Netwerkopdrachten
- 21. CSV‑bestanden verwerken
- 22. JSON verwerken
- 23. Active Directory opdrachten
- 24. Scriptparameters & switches
- 25. Logging & transcript
- 26. Scheduled Tasks
- 27. Error handling met Try/Catch/Finally
- 28. Security & Credentials
- 29. Remoting
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.
23. Active Directory opdrachten
(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.