💡 1. Vergleichsoperatoren & if/else
PowerShell verwendet keine Symbole wie == oder !=, sondern textuelle Vergleichsoperatoren:
# Vergleichsoperatoren in PowerShell:
# -eq (Gleich) -ne (Ungleich)
# -gt (Größer) -lt (Kleiner)
# -ge (Größer-Gleich) -le (Kleiner-Gleich)
# -like (Wildcards *) -match (Reguläre Ausdrücke)
# -in / -contains -and / -or / -not
$port = 8080
if ($port -ge 1024 -and $port -le 49151) {
"Gültiger User-Port"
} elseif ($port -lt 1024) {
"Privilegierter System-Port"
} else {
"Dynamischer / Privater Port"
}
🚀 2. Exklusive PowerShell 7+ Operatoren
PowerShell 7 führt elegante Sprach-Features ein, die Skripte drastisch verkürzen und lesbarer machen:
# 1. Ternärer Operator (Bedingung ? Wahr-Wert : Falsch-Wert):
$statusText = $serviceIsRunning ? "ONLINE" : "OFFLINE"
# 2. Null-Coalescing Operator (??):
# Liefert den linken Wert, oder den rechten, falls links $null ist:
$timeout = $customTimeout ?? 30
# 3. Null-Conditional Assignment (??=):
$configPath ??= "/etc/defaults.conf" # Weist nur zu, wenn $configPath $null ist
# 4. Pipeline-Chaining (&& und ||):
# && führt den nächsten Befehl nur bei Erfolg aus ($? -eq $true)
# || führt den nächsten Befehl nur bei Misserfolg aus ($? -eq $false)
Test-Connection "1.1.1.1" -Count 1 && Write-Host "Online" || Write-Host "Offline"
Der ?? Operator ist wie ein Rettungsanker in einer Kaskade: Suchst du eine Konfiguration, prüfst du zuerst Benutzereinstellungen, dann Systemvariablen und greifst erst im Notfall auf den Standard-Fallback zu: $user ?? $system ?? "Default". Sauber, kurz und null-safe!
🔀 3. Das Super-Werkzeug: switch -Regex
Die switch-Anweisung in PowerShell ist weitaus mächtiger als in anderen Sprachen. Mit dem Schalter -Regex kannst du komplexe Muster mit automatischer Match-Gruppe abgleichen:
$logLine = "ERR-404: Not Found"
switch -Regex ($logLine) {
"^ERR-(\d+)" {
$errorCode = $Matches[1]
"Fehlercode erkannt: $errorCode"
break
}
"^WARN" {
"Warnung erkannt"
break
}
default {
"Unbekanntes Protokoll-Format"
}
}
📑 4. Cheat-Sheet: Moderne Operatoren
| Operator / Feature | Syntax | Verhalten |
|---|---|---|
Ternary |
$a ? $b : $c |
Kompaktes Inline-if-else. |
Null-Coalescing |
$val ?? "Default" |
Fallback bei $null. |
Pipeline-AND |
Cmd1 && Cmd2 |
Cmd2 wird nur bei Erfolg von Cmd1 ausgeführt. |
Pipeline-OR |
Cmd1 || Cmd2 |
Cmd2 wird nur bei Fehler in Cmd1 ausgeführt. |
switch -Regex |
switch -Regex ($str) { ... } |
Mustererkennung mit Regex & automatischer $Matches Variable. |