PowerShell en Modules: Wat zijn ze en hoe laad je ze efficiënt?
PowerShell is een krachtige tool voor automatisering en systeembeheer, en een van de grootste troeven ervan zijn dus modules. Deze breiden de functionaliteit van PowerShell uit met bijvoorbeeld cmdlets, functies, variabelen en meer. Of je nu een webdesigner bent die taken wil automatiseren of een systeembeheerder die servers beheert, het begrijpen van modules is essentieel.
Wat is een PowerShell module?
Een module is dus een pakket met PowerShell-code dat specifieke functionaliteit biedt. Denk aan modules voor Active Directory, Azure, of zelfs voor het beheren van Windows-updates. Door modules te laden, krijg je toegang tot extra cmdlets die standaard niet beschikbaar zijn.
Voorbeeld: de module Az biedt toegang tot Azure-resources via PowerShell.
Hoe laad je een PowerShell module?
Het laden van een module is eenvoudig met de cmdlet Import-Module. Hier is dus een voorbeeld:
Import-Module Az
Als de module nog niet geïnstalleerd is, kun je deze eerst installeren via:
Install-Module Az -Scope CurrentUser
Tip: Gebruik
-Scope CurrentUserom installatie zonder adminrechten mogelijk te maken.
Automatisch laden van PowerShell modules
Vanaf PowerShell 3.0 worden modules automatisch geladen wanneer je een cmdlet gebruikt die erin zit. Bijvoorbeeld:
Get-AzResourceGroup
Als de Az-module beschikbaar is op je systeem, wordt deze automatisch geladen.
PowerShell Modules beheren
Je kunt geïnstalleerde modules dus bekijken met:
Get-InstalledModule
Wil je weten welke modules momenteel geladen zijn in je sessie?
Get-Module
Module-updates
Modules worden regelmatig bijgewerkt. Je kunt ze updaten met:
Update-Module Az
Veelvoorkomende problemen
- Module niet gevonden: Controleer of de module geïnstalleerd is en of je de juiste naam gebruikt.
- Geen rechten: Gebruik
-Scope CurrentUserof voer PowerShell uit als administrator. - Verouderde module: Update regelmatig om compatibiliteit en beveiliging te garanderen.
Laden van modules via een PowerShell functie
Function Confirm-Prerequisites {
$modules = @("Az", "Microsoft.Graph")
foreach ($module in $modules) {
# Zoek geïnstalleerde module
$installedModule = Get-InstalledModule -Name $module -ErrorAction SilentlyContinue
if ($null -eq $installedModule) {
Write-Host "$module niet gevonden. Installeren in CurrentUser..."
Install-Module -Name $module -Force -Scope CurrentUser
} else {
$latestModule = Find-Module -Name $module
if ($installedModule.Version -lt $latestModule.Version) {
Write-Host "$module gevonden in $($installedModule.InstalledLocation) (versie $($installedModule.Version)). Updaten naar $($latestModule.Version)..."
Update-Module -Name $module -Force
} else {
Write-Host "$module is up-to-date. Versie: $($installedModule.Version) (locatie: $($installedModule.InstalledLocation))"
}
}
}
# Check Azure CLI
if (Get-Command az -ErrorAction SilentlyContinue) {
Write-Host "Azure CLI is geïnstalleerd."
} else {
Write-Host "Azure CLI ontbreekt. Installeer via https://aka.ms/InstallAzureCli"
}
# Check Winget (niet op Windows Server)
$osCaption = (Get-WmiObject -Class Win32_OperatingSystem).Caption
if ($osCaption -match "Windows Server") {
Write-Host "Winget-check overgeslagen (Windows Server)."
} else {
if (Get-Command winget -ErrorAction SilentlyContinue) {
$wingetVersion = winget --version 2>&1 | Out-String
if ($wingetVersion -match "v(\d+\.\d+\.\d+)") {
Write-Host "Winget geïnstalleerd. Versie: $($matches[1])"
} else {
Write-Host "Winget geïnstalleerd maar versie onbekend."
}
} else {
Write-Host "Winget ontbreekt. Installeer via https://aka.ms/GetWinget"
}
}
Write-Host "Alle prerequisites gecontroleerd en bijgewerkt indien nodig."
}
Confirm-Prerequisites
Conclusie
Modules maken PowerShell flexibel en krachtig. Door te leren hoe je ze installeert, laadt en beheert, kun je je automatisering naar een hoger niveau tillen. Of je nu werkt met Azure, websites onderhoudt, of servers beheert — er is altijd een module die je werk makkelijker maakt. Als je PowerShell wilt leren beheersen, doe dan de cursus op Learn.
Wil je contact met mij opnemen, dan kan dat via het contact formulier.