Zum Inhalt springen

Vergleichs- und logische Operatoren

Core
Lernziele
  • 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.

Vergleichsoperatoren

PowerShell verwendet verschiedene Operatoren, um Werte miteinander zu vergleichen. Hier sind die gängigen Operatoren:

  • -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 = 3
    if ($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" }

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"
    }

Hier ein Beispiel, das mehrere Vergleichsoperatoren und logische Operatoren kombiniert:

Terminal-Fenster
# 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:

Terminal-Fenster
# 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'."
}
  • Vergleichsoperatoren wie -eq, -lt, -gt und weitere erlauben präzise Vergleiche von Zahlen und Strings.
  • Spezialoperatoren wie -like, -match, -contains und 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.