Skip to main content

New Page

<#
Praktijkleren Examenopdracht – PowerShell
Onderwerp: Kentekencheck automatiseren
Auteur: <jouw naam>
Datum: <datum>


Dit script automatiseert het opzoeken van voertuiggegevens
via RDW Open Data.
#>


function Vraag-Kenteken {
    <#
    Vraagt maximaal 3 keer om een geldig kenteken.
    Geeft het kenteken of $null terug.
    #>
    $pogingen = 0  # variabele


    while ($pogingen -lt 3) {  # lus met limiet
        $kenteken = Read-Host "Voer een kenteken in (6 tekens)"
        $kenteken = $kenteken.ToUpper().Replace("-", "").Trim()


        if ($kenteken.Length -eq 6) {  # beslissing
            return $kenteken
        }
        else {
            $pogingen++
            Write-Host "Ongeldig kenteken. Poging $pogingen van 3." -ForegroundColor Red
        }
    }


    Write-Host "Te veel foutieve pogingen. Programma stopt." -ForegroundColor Yellow
    return $null
}


function Haal-VoertuiggegevensOp {
    param (
        [string]$Kenteken
    )


    $url = "https://opendata.rdw.nl/resource/m9d7-ebf2.json?kenteken=$Kenteken"


    try {
        return Invoke-RestMethod -Uri $url -Method Get
    }
    catch {
        return $null
    }
}


function Toon-Gegevens {
    param (
        $Data
    )


    if (-not $Data) {  # beslissing
        Write-Host "Geen voertuiggegevens gevonden." -ForegroundColor Yellow
        return
    }


    $voertuig = $Data[0]
    Write-Host ""
    Write-Host "Voertuiggegevens:"
    Write-Host "Kenteken:" $voertuig.kenteken
    Write-Host "Merk:" $voertuig.merk
    Write-Host "Type:" $voertuig.handelsbenaming
    Write-Host "Voertuigsoort:" $voertuig.voertuigsoort
    Write-Host "Eerste toelating:" $voertuig.datum_eerste_toelating
}


# Hoofdprogramma
$doorgaan = $true  # variabele


while ($doorgaan) {  # lus
    $kenteken = Vraag-Kenteken
    if ($null -eq $kenteken) {
        break
    }


    $gegevens = Haal-VoertuiggegevensOp -Kenteken $kenteken
    Toon-Gegevens -Data $gegevens


    $keuze = Read-Host "`nNog een kenteken controleren? (j/n)"
    if ($keuze.ToLower() -ne "j") {  # beslissing
        $doorgaan = $false
    }
}


Write-Host "Programma afgesloten."