PowerShell-Funktionen bieten eine strukturierte Möglichkeit, wiederverwendbaren Code übersichtlich zu organisieren. Gerade im Zusammenhang mit Microsoft Intune und der Systemadministration verbessern sie die Lesbarkeit von Skripten, vermeiden doppelte Codezeilen und erleichtern die langfristige Wartung.
Auch wenn du vielleicht keine „strukturierte“ Hilfe von mir erwartest – es lohnt sich, diese Tipps zu beachten!
In diesem Leitfaden erfährst du, was PowerShell-Funktionen sind und warum du sie in deinen Intune-Skripten unbedingt einsetzen solltest.
Was sind PowerShell-Funktionen?
Eine Funktion in PowerShell ist ein benannter Codeblock, der eine bestimmte Aufgabe erfüllt. Du definierst sie einmal und kannst sie anschließend beliebig oft im Skript aufrufen:
function Get-IntuneWelcome {
Write-Output „Willkommen bei Intune. Bitte aktualisieren Sie Ihre Richtlinien.“
}
Get-IntuneWelcome
Funktionen können auch Parameter annehmen – so wird dein Code flexibel und wiederverwendbar:
function Get-IntuneWelcome {
param([string]$UserName)
Write-Output „Hallo $UserName, bitte stellen Sie sicher, dass Ihr Gerät konform ist.“
}
Get-IntuneWelcome -UserName „Mattia“
Warum Funktionen statt Inline-Code?
Es gibt mehrere gute Gründe, Funktionen anstelle von wiederholtem Inline-Code zu verwenden:
• Kein doppelter Code: Einmal definierte Logik kann mehrfach genutzt werden – ohne Copy-Paste.
• Bessere Lesbarkeit: Benannte Funktionen machen deutlich, was ein Codeblock tut.
• Testbarkeit: Funktionen lassen sich einfacher separat testen.
• Fehlerbehandlung: Fehler lassen sich besser isolieren und behandeln.
⸻
Vergleich: Inline-Code vs. Funktion
Ein Beispiel: Die Compliance zweier Benutzer („Margeret“ und „Oliver“) wird über Intune geprüft.
Ohne Funktion (wiederholter Code):
$user = „Margeret“
Write-Output „Prüfe Compliance für $user“
$status = Get-IntuneManagedDevice -Filter „userPrincipalName eq ‚$user'“
Write-Output „Compliance-Status: $($status.ComplianceState)“
$user = „Oliver“
Write-Output „Prüfe Compliance für $user“
$status = Get-IntuneManagedDevice -Filter „userPrincipalName eq ‚$user'“
Write-Output „Compliance-Status: $($status.ComplianceState)“
Mit Funktion:
function Check-UserCompliance {
param([string]$UserName)
Write-Output „Prüfe Compliance für $UserName“
$status = Get-IntuneManagedDevice -Filter „userPrincipalName eq ‚$UserName'“
Write-Output „Compliance-Status: $($status.ComplianceState)“
}
Check-UserCompliance -UserName „Margeret“
Check-UserCompliance -UserName „Oliver“
Die Funktion macht den Code übersichtlicher, vermeidet Wiederholungen und lässt sich einfacher pflegen.