De functie Verify-Prerequisites controleert en installeert de benodigde modules en tools voor het hoofdscript. Dit is essentieel om to verifieren of alle vereisten geinstalleerd zijn, aanwezig zijn en up-to-date zijn, wat de kans op fouten tijdens de uitvoering van het script minimaliseert.
Wat doet de functie precies?
- Modules controleren en installeren:
- De functie definieert een lijst met vereiste modules, zoals Az en Microsoft.Graph.
- Voor elke module controleert de functie of er al is met Get-InstalledModule.
- Install-Module installeert de module als deze niet er niet is.
- Update-Module werkt de module bij als deze niet de nieuwste versie is
- Azure CLI controleren:
- De functie controleert of de Azure CLI is geïnstalleerd met Get-Command az.
- Als de Azure CLI niet er niet is, wordt een bericht weergegeven met instructies om deze te installeren.
- Winget controleren:
- De functie controleert of Winget is geïnstalleerd, behalve op Windows Server.
- Als Winget is geïnstalleerd, vindt controle plaats.
- Als Winget niet er niet is, komt een bericht op het scherm met instructies om deze te installeren.
- Globale variabele instellen:
- De functie stelt de globale variabele $global:installed in op $true om aan te geven dat alle vereisten zijn gecontroleerd en geïnstalleerd. Dit voorkomt dat bij een tweede keer draaien van het script in dezelfde context, de installatie opnieuw plaatsvindt.
Waarom is verifieren of alle vereisten geinstalleerd zijn handig?
Het vooraf draaien van deze functie zorgt ervoor dat alle benodigde modules en tools aanwezig en up-to-date zijn voordat het hoofdscript wordt uitgevoerd. Dit voorkomt onderbrekingen en fouten tijdens de uitvoering van het script. Het updaten van de Az-module kan soms lang duren, zoals je hebt ervaren. Door deze functie vooraf uit te voeren, komen dergelijke vertragingen minder voor en wordt de algehele efficiëntie van het script verbeterd.
Hier volgt het sample script:
# Begin Function Verify-Prerequisites
Function Verify-Prerequisites {
$modules = @(
@{ Name = "Az" },
@{ Name = "Microsoft.Graph" }
)
if (-not $global:installed) {
foreach ($module in $modules) {
$installedModule = Get-InstalledModule -Name $module.Name -ErrorAction SilentlyContinue
if ($null -eq $installedModule) {
Write-Host "$($module.Name) is not installed. Installing the latest version..."
Install-Module -Name $module.Name -Force -Scope CurrentUser
} else {
$latestModule = Find-Module -Name $module.Name
if ($installedModule.Version -lt $latestModule.Version) {
Write-Host "$($module.Name) is installed but not the latest version. Updating to version $($latestModule.Version)..."
Update-Module -Name $module.Name -Force
} else {
Write-Host "$($module.Name) is installed and up-to-date. Version: $($installedModule.Version)"
}
}
}
# Check if Azure CLI is installed
if (Get-Command az -ErrorAction SilentlyContinue) {
Write-Host "Azure CLI is installed."
} else {
Write-Host "Azure CLI is not installed. Please install it from https://learn.microsoft.com/nl-nl/cli/azure/install-azure-cli-windows?pivots=msi"
}
# Check if Winget is installed (only if not on Windows Server)
$osCaption = (Get-WmiObject -Class Win32_OperatingSystem).Caption
if ($osCaption -match "Windows Server") {
Write-Host "Skipping Winget check on 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 is installed. Version: $($matches[1])"
} else {
Write-Host "Winget is installed but version could not be determined."
}
} else {
Write-Host "Winget is not installed. Please install it from https://aka.ms/GetWinget"
}
}
$global:installed = $true
Write-Host "Installation was successful. All prerequisites met. No further action needed."
} else {
Write-Host "All prerequisites met. No further action needed."
}
}
# End Function Verify-Prerequisites
Meer informatie over PowerShell vind je hier. Een voorbeeld vind je hier.