Vergleichs- und logische Operatoren
- Vergleichs-, Muster- und logische Operatoren sicher einsetzen
- Typische Stolperfallen bei Vergleichen kennen
PowerShell bietet eine Vielzahl von Vergleichsoperatoren und logischen Operatoren, die dir dabei helfen, Bedingungen in Skripten präzise auszuwerten. In diesem Dokument stellen wir die wichtigsten Vergleichsoperatoren vor – von numerischen und textuellen Vergleichen (eq, lt, gt etc.) bis hin zu speziellen Operatoren wie contains, like und match – und erklären, wie logische Ausdrücke mit -and, -or und -not kombiniert werden.

1. Vergleichsoperatoren
Abschnitt betitelt „1. Vergleichsoperatoren“PowerShell verwendet verschiedene Operatoren, um Werte miteinander zu vergleichen. Hier sind die gängigen Operatoren:
1.1 Numerische und Textvergleiche
Abschnitt betitelt „1.1 Numerische und Textvergleiche“-
-eq: Gleich (equal to)
Beispiel:if ($a -eq $b) { ... } -
-ne: Ungleich (not equal to)
Beispiel:if ($a -ne $b) { ... } -
-lt: Kleiner als (less than)
Beispiel:if ($a -lt $b) { ... } -
-le: Kleiner oder gleich (less than or equal to)
Beispiel:if ($a -le $b) { ... } -
-gt: Größer als (greater than)
Beispiel:if ($a -gt $b) { ... } -
-ge: Größer oder gleich (greater than or equal to)
Beispiel:if ($a -ge $b) { ... }
1.2 Spezielle Vergleichsoperatoren für Strings und Collections
Abschnitt betitelt „1.2 Spezielle Vergleichsoperatoren für Strings und Collections“-
-like: Vergleicht einen String anhand eines Musters (Wildcardvergleich)
Beispiel:Terminal-Fenster $string = "PowerShell"if ($string -like "*Shell") { Write-Output "Passend!" } -
-notlike: Das Gegenteil von
-like
Beispiel:Terminal-Fenster if ($string -notlike "Power*") { Write-Output "Passt nicht!" } -
-match: Vergleicht einen String mit einem regulären Ausdruck
Beispiel:Terminal-Fenster $string = "abc123"if ($string -match "\d+") { Write-Output "Enthält Zahlen" } -
-notmatch: Das Gegenteil von
-match
Beispiel:Terminal-Fenster if ($string -notmatch "^\d+$") { Write-Output "Besteht nicht ausschließlich aus Zahlen" } -
-contains: Prüft, ob eine Sammlung ein bestimmtes Element enthält
Beispiel:Terminal-Fenster $array = @(1, 2, 3, 4, 5)if ($array -contains 3) { Write-Output "Array enthält 3" } -
-notcontains: Das Gegenteil von
-contains
Beispiel:Terminal-Fenster if ($array -notcontains 10) { Write-Output "Array enthält nicht 10" } -
-in: Prüft, ob ein Element in einer Sammlung enthalten ist (umgekehrte Logik zu
-contains)
Beispiel:Terminal-Fenster $item = 3if ($item -in $array) { Write-Output "Element ist im Array" } -
-notin: Das Gegenteil von
-in
Beispiel:Terminal-Fenster if ($item -notin $array) { Write-Output "Element ist nicht im Array" }
2. Logische Operatoren
Abschnitt betitelt „2. Logische Operatoren“Logische Operatoren helfen dir, mehrere Bedingungen miteinander zu verknüpfen:
-
-and: Logisches UND – beide Bedingungen müssen wahr sein.
Beispiel:Terminal-Fenster if ( ($a -gt 5) -and ($a -lt 10) ) {Write-Output "a liegt zwischen 6 und 9"} -
-or: Logisches ODER – mindestens eine Bedingung muss wahr sein.
Beispiel:Terminal-Fenster if ( ($a -lt 5) -or ($a -gt 10) ) {Write-Output "a ist kleiner als 5 oder größer als 10"} -
-not: Negiert einen Ausdruck.
Beispiel:Terminal-Fenster if (-not ($a -eq 7)) {Write-Output "a ist nicht gleich 7"}
3. Kombinierte Beispiele
Abschnitt betitelt „3. Kombinierte Beispiele“Hier ein Beispiel, das mehrere Vergleichsoperatoren und logische Operatoren kombiniert:
# Beispiel: Überprüfe, ob ein String ein bestimmtes Muster enthält und ob ein Element in einem Array vorhanden ist$string = "PowerShell ist großartig"$array = @("Scripting", "Automation", "PowerShell")
if (($string -like "*Shell*") -and ($array -contains "PowerShell")) { Write-Output "Der String enthält 'Shell' und das Array enthält 'PowerShell'."}Ein weiteres Beispiel, das reguläre Ausdrücke und logische Operatoren kombiniert:
# Beispiel: Prüfe, ob ein String nicht nur aus Zahlen besteht oder einen bestimmten Ausdruck nicht enthält$string = "abc123"if (($string -notmatch "^\d+$") -and ($string -notlike "*Test*")) { Write-Output "Der String besteht nicht ausschließlich aus Zahlen und enthält nicht 'Test'."}4. Zusammenfassung
Abschnitt betitelt „4. Zusammenfassung“- Vergleichsoperatoren wie
-eq,-lt,-gtund weitere erlauben präzise Vergleiche von Zahlen und Strings. - Spezialoperatoren wie
-like,-match,-containsund ihre Gegenstücke bieten erweiterte Vergleichsmöglichkeiten – ideal für Mustervergleiche und die Arbeit mit Sammlungen. - Logische Operatoren (
-and,-or,-not) ermöglichen das Verknüpfen mehrerer Bedingungen zu komplexen logischen Ausdrücken.
Mit diesen Operatoren kannst du Bedingungen in deinen PowerShell-Skripten flexibel und präzise abbilden und so deinen Code noch leistungsfähiger gestalten.