Logische- und Vergleichs-Operatoren in PowerShell
Microsoft PowerShell wird in Zukunft die Kommandozeile (CMD) ablösen. PowerShell ist sehr mächtig und kann eigentlich alles an Windows-Betriebssystemen ansteuern. Aber auch für bestimmte Schleifen und Anweisungen benötigt man Vergleichs-Operatoren um Werte miteinander zu vergleichen. Microsoft orientiert sich aber nicht an Standard-Operatoren, sondern geht in der Namensgebung andere Wege. Zeichen wie “=”, “<“, “>” oder andere standardisierte Zeichen werden nicht unterstützt. Wir zeigen euch wie ihr die Operatoren in PowerShell verwendet und eine Übersicht welche es gibt.
Operatoren in PowerShell verwenden
Wie oben schon genannt, geht Microsoft andere Wege bei der Verwendung der Operatoren in PowerShell. Hier kann nicht einfach ein “< kleiner” oder “> größer” verwendet werden.
Vergleichs-Operatoren benötigen wir in vielen Anweisungen wie IF ELSE und SWITCH, aber auch bei Schleifen um verschiedene Werte miteinander vergleichen zu können. Diese sind unvermeidbar und (fast) in jedem PowerShell Script zu verwenden. Welche Operatoren es gibt und Beispiele hierzu zeigen wir euch in dieser Liste, beziehungsweise Übersicht.
Um die Vergleichs-Operatoren in PowerShell zu testen, ist es am einfachsten die Anweisungen wie in den Beispielen zu testen. Für den täglichen Einsatz werden diese aber häufig in Schleifen verwendet, wie im Bild oberhalb zu sehen.
Vergleichs-Operatoren in PowerShell
In folgender Aufstellung versuchen wir euch die Vergleichs-Operatoren aufzuzeigen, welche in Windows PowerShell verwendet werden können. Ich hoffe die folgende Liste / Übersicht hilft euch weiter.
-eq (gleich)
Der Operator -eq
besagt, dass ein Wert gleich ist. Hier können Zahlen miteinander verglichen werden, aber auch Zeichenketten. Ein Beispiel wäre folgendes:
30 -eq 30
Das würde “TRUE” ausgeben, da 30 gleich 30 ist.
-ne (ungleich)
Der Operator -ne
ist das Gegenstück zu -eq
und bedeutet NICHT gleich. Auch hier können die Zahlen, aber auch Strings miteinander verglichen werden. Hier haben wir folgendes Beispiel:
30 -ne 35
Hier wird der Wert “TRUE” zurück gegeben, da eben 30 nicht gleich 35 ist.
-lt (kleiner)
Mit -lt
kann überprüft werden, ob ein Wert kleiner ist. Normalerweise werden Zahlen verglichen, aber auch Strings. Hier ein Beispiel:
20 -lt 30 "acht" -lt "sieben"
Hier ist “acht” kleiner als “sieben”. Hier werden aber die Zeichen verglichen. Da hier die Zeichen gezählt werden, wird “TRUE” zurückgegeben.
-le (kleiner oder gleich)
Der Vergleichsoperator -le
prüft ob ein Wert kleiner ODER gleich ist. Auch hier kann wieder alles miteinander verglichen werden.
10 -le 20 20 -le 20 "acht" -le "sieben" "acht" -le "acht"
Hier geben alle Werte “TRUE” zurück. Da kleiner ODER gleich.
-gt (größer)
Natürlich gibt es auch wieder ein gegenstück zu kleiner, und zwar größer -gt
. Hier kann man auch wieder alles miteinander vergleichen.
30 -gt 20 "sieben" -gt "acht"
Auch hier wird “TRUE” zurück gegeben, da “sieben” mehr Zeichen als “acht” hat. Und 30 natürlich größer als 20 ist.
-ge (größer oder gleich)
Und wow, es gibt auch ein größer oder gleich mit dem Operator -ge
. Auch hier kann man wieder alles Vergleichen.
30 -ge 20 20 -ge 20 "sieben" -ge "sieben" "sieben" -ge "acht"
Das sollte auch selbsterklärend sein. Überall wird der Wert “TRUE” zurück geliefert.
-like (mit Wildcards)
Mit -like
werden Zeichenketten miteinander verglichen. Mit like kann man ermitteln, ob ein bestimmter String in einem anderen String vorhanden ist. Wenn die beiden Strings nicht identisch sind, benötigt man ein Wildcard mit “*”. Das würde folgendermaßen aussehen:
"Microsoft" -like "Mic*"
Hier wird der Wert “TRUE” ausgegeben. Würde man den Stern (*) für das Wildcard weglassen, so bekäme man “FALSE” geliefert.
Natürlich ist es auch möglich einen String innerhalb eines anderen zu suchen. Dafür benötigen wir dann ein Weiteres Wildcard am Anfang des Suchkriteriums:
"Microsoft" -like "*roso*"
Hier wird übrigens die Groß- und Kleinschreibung ignoriert. Ebenfalls ist es möglich, statt -like
auch -notlike
zu verwenden. Die Vorgehensweise sollte selbsterklärend sein.
-contains (in Arrays)
-contains
wird meist verwendet, um bestimmte Strings in Arrays zu finden, beziehungsweise zu prüfen, ob ein String im Array enthalten ist. Zur einfacheren Erklärung hier ein Beispiel:
$farben = "Blau","Gruen","Rot" $farben -contains "Rot"
Hier wird “TRUE” gemeldet, da “Rot” im Array vorhanden ist.
Ach hier wird die Groß- und Kleinschreibung ignoriert. Auch hier kann statt -contains
der Ausdruck -notcontains
verwendet werden. Auch das sollte selbsterklärend sein.
-match (für Substrings)
Der letzte Ausdruck in diesem Tutorial nennt sich -match
. Hier wird ähnlich wie bei “-like” nach Substrings gesucht. Allerdings werden hier keine Wildcard-Sterne benötigt.
"Microsoft" -match "roso"
Auch hier wird natürlich “TRUE” ausgegeben.
Die Schreibweise ob groß oder klein wird ignoriert. Zu -match
gibt es ebenfalls wieder ein Gegenstück, und zwar -notmatch
.
Logische Operatoren in PowerShell
Wie auch in anderen Sprachen gibt es auch logische Operatoren. Möchte man dass in einer IF Anweisung mehrere Bedingungen erfüllt sind, benötigt man beispielsweise ein -and
. Möchte man dass “diese” oder “diese” Anweisung erfüllt sind, benötigt man ein -or
. Wir zeigen euch folgende logische Operatoren in PowerShell.
-and (und)
Der Operator -and
wird verwendet, wenn in einer Bedingung mehrere Werte erfüllt sein sollen. Dies erfüllt ein logisches “und”. Ergibt true, wenn beide Werte wahr sind.
if ('1' -eq '1' -and '20' -eq '20'){ write-host "wahr"} else{ write-host "nicht wahr"}
Diese Anweisung ergibt “wahr”, da 1=1 UND 20=20.
-or (oder)
Der logische Operator -or
wird verwendet, wenn MINDESTENS eine von mehreren Bedingungen erfüllt sein sollen. Dies erfüllt ein logisches “oder”. Ergibt true, wenn einer der Werte wahr ist.
if ('1' -eq '1' -or '20' -eq '40'){ write-host "wahr"} else{ write-host "nicht wahr"}
Diese Anweisung ergibt “wahr”, da die erste Bedingung korrekt ist (1=1).
-xor (exklusives oder)
Das -xor
wird verwendet, wenn NUR eine von mehreren Bedingungen erfüllt ist. Das erfüllt ein “exklusives oder”. Ergibt true, wenn nur einer der Werte wahr ist.
if ('1' -eq '1' -or '20' -eq '40' -or '2' -eq '3'){ write-host "wahr"} else{ write-host "nicht wahr"}
Diese Anweisung ergibt “wahr”, da die erste Bedingung korrekt ist (1=1).
-not (nicht)
Das einfache -not
oder auch !
wird verwendet, wenn die Bedingung nicht erfüllt ist. Das bedeutet ein “nicht”. Ergibt true, wenn die Bedingung nicht erfüllt ist.
Alternativ kann statt “not” auch ein Ausrufezeichen “!” verwendet werden.
if (-not ('1' -eq '4')){ write-host "wahr"} else{ write-host "nicht wahr"} ##### ALTERNATIV if (! ('1' -eq '4')){ write-host "wahr"} else{ write-host "nicht wahr"}
Beide Bedingungen ergeben “wahr”, da 1 nicht gleich 4 ist.
Ich hoffe wir konnten euch die Operatoren in PowerShell verständlich erklären und Beispiele dafür liefern. Am Anfang ist dies sehr ungewohnt, aber nach der zeit ist es meiner Meinung nach schöner zu Arbeiten, als in anderen Scriptsprachen.