Wie viele andere Programmiersprachen verfügt auch PowerShell über verschiedene Vergleichsoperatoren. Allerdings sehen diese im Vergleich zu anderen Sprachen etwas seltsam aus. Anstatt ==
verwendet man eq
. Anstatt <>
gibt es ne
. Das kann für Anfänger verwirrend sein. In diesem Artikel werden wir uns den PowerShell-Like-Operator und andere Vergleichsoperatoren genauer anschauen.
Überprüfen der Gleichheit mit den Operatoren eq
und ceq
Um in PowerShell zu überprüfen, ob ein Objekt einem anderen Objekt entspricht, wird der Operator eq
verwendet. Der eq
-Operator vergleicht einfache Objekte verschiedener Typen wie Zeichenketten, boolesche Werte, Ganzzahlen usw. Bei Verwendung des eq
-Operators wird entweder der boolesche Wert True
oder False
je nach Ergebnis zurückgegeben.
Der Operator -eq
benötigt zwei Werte, die verglichen werden sollen. Angenommen, Sie weisen einer Variablen namens $string
eine Zeichenkette zu. Sie möchten den Wert dieser Variable mit dem Zeichenkettenwert "PowerShell"
vergleichen, um sicherzustellen, dass sie gleich sind.
Im folgenden Beispiel sehen Sie, dass der Wert PowerShell
der Variablen $string
zugewiesen wird. Anschließend vergleicht das Beispiel den Wert von $string
mit dem String powershell
mithilfe des Operators eq
. Einfach genug, oder? Aber Moment, sie sind eigentlich nicht gleich.
Beachten Sie, dass
=
ein Zuweisungsoperator und KEIN Vergleichsoperator ist. Sie können=
nicht verwenden, um einen Wert mit einem anderen in PowerShell zu vergleichen.
Testen der Groß-/Kleinschreibung mit dem Operator ceq
Im obigen Beispiel sehen Sie, wie eq
einen booleschen Wert True
zurückgibt, obwohl der String nicht genau gleich ist. Dieses Verhalten tritt auf, weil der Operator eq
die Groß-/Kleinschreibung nicht beachtet. Um die Unterscheidung von Groß-/Kleinschreibung zu testen, verwenden Sie den Operator ceq
. Der Operator ceq
funktioniert genauso wie eq
, ist jedoch auf Groß-/Kleinschreibung empfindlich.
Im folgenden Code-Snippet sehen Sie ein Beispiel für die Verwendung von ceq
. Beachten Sie, wie PowerShell den Unterschied in der Groß-/Kleinschreibung erkennt.
Testen von Ungleichheit mit den Operatoren ne
und cne
Genau wie eq
und ceq
für die Gleichheit testen, hat PowerShell ein Paar von Operatoren, die das genaue Gegenteil tun, nämlich ne
und cne
. Diese beiden Operatoren führen wie ihre Gegenstücke die gleiche Operation aus, jedoch das Gegenteil.
Testen von Elementen in einer Sammlung
Normalerweise werden die Operatoren eq
und ceq
für Skalare oder einzelne Werte wie Strings, Ganzzahlen und boolesche Werte verwendet. Aber diese Operatoren können auch Instanzen bestimmter Werte in einer Sammlung wie einem Array finden.
Beachten Sie in dem folgenden Beispiel, dass wir ein Array mit 12 Ganzzahlen erstellen. Vielleicht möchten Sie alle Instanzen in diesem Array finden, die der Zahl 9 entsprechen. Kein Problem, verwenden Sie den Operator eq
gegen das Array, um alle Instanzen der verglichenen Ganzzahl zurückzugeben.
Testen von Sammlungen auf enthaltene Werte
Nachdem Sie gerade gelernt haben, den Operator eq
zur Suche nach Instanzen in Arrays zu verwenden, gehen wir einen Schritt weiter und stellen Ihnen die „Enthaltens“-Operatoren vor. Diese Operatoren sind contains
, notcontains
, in
und notin
. Diese Operatoren geben einen booleschen Wert True
oder False
zurück, wenn eine Sammlung ein Element enthält oder nicht.
Schauen Sie sich das folgende Beispiel an. In diesem Beispiel erstellen wir ein Array mit neun Ganzzahlen. Wenn Sie eine einfache Ja/Nein-Antwort darauf möchten, ob dieses Array eine bestimmte Ganzzahl enthält, können Sie das mit contains
oder notcontains
bekommen.
Gleiches gilt für die Operatoren in
und notin
. Diese Operatoren sind nahezu identisch zu contains
und notcontains
mit einer Ausnahme: Der zu vergleichende Wert steht links anstelle von rechts.
Testen von „Größer als“ mit den Operatoren gt
und ge
Was passiert, wenn Sie testen müssen, ob eine Zahl (eine Ganzzahl) eine andere Zahl größer als ist oder vielleicht größer oder gleich einer anderen Zahl ist? Sie verwenden die Operatoren gt
und ge
. Diese Operatoren vergleichen Ganzzahlen.
Wie die anderen Operatoren geben auch diese Operatoren je nachdem, ob eine Ganzzahl größer als eine andere ist, einen booleschen Wert True
oder False
zurück. Beide Operatoren testen, ob die linke Ganzzahl größer als oder größer als oder gleich der rechten Ganzzahl ist.
In dem untenstehenden Beispiel können Sie sehen, wie sich jeder dieser Operatoren verhält.
Ähnlich wie der eq
-Operator, mit dem Sie Instanzen in Sammlungen finden können, können Sie dies auch mit den Operatoren ge
und gt
tun. PowerShell durchsucht jedes Element in einer Sammlung und vergleicht jeden Wert mit dem von Ihnen angegebenen Wert. Ein großartiges Beispiel dafür finden Sie unten.
Testen von „kleiner als“ mit den Operatoren lt
und le
Ähnlich wie bei den Operatoren gt
und ge
erfüllen die Operatoren lt
und le
die gleiche Funktion, jedoch umgekehrt. Die Operatoren lt
und le
vergleichen zwei Werte und testen, ob die Ganzzahl auf der linken Seite kleiner als oder kleiner als oder gleich der Ganzzahl auf der rechten Seite ist.
Im Beispiel unten sehen Sie, dass dieselbe Funktionalität des Vergleichs jedes Werts in einer Sammlung genauso gilt wie bei gt
und ge
.
Übereinstimmungen basierend auf Platzhaltern mit dem PowerShell Like Operator
Bisher haben Sie gelernt, wie man 1:1-Übereinstimmungen durchführt. Alle bisher verwendeten Operatoren verglichen einen ganzen Wert mit einem anderen, aber PowerShell hat noch einen weiteren Trick auf Lager. Sie können Werte auch anhand von Platzhaltern oder Sternchen vergleichen.
Angenommen, Sie kennen nur einige Zeichen einer Zeichenkette. Sie können „eq“ nicht verwenden, weil „eq“ erfordert, dass Sie die gesamte Zeichenkette kennen. Mit dem PowerShell „like“-Operator müssen Sie die gesamte Zeichenkette nicht kennen. Um zu testen, ob ein Wert einem anderen ähnlich ist, können Sie den Teil, den Sie nicht kennen, durch einen Platzhalter ersetzen.
Wie bei anderen Operatoren kann diese Funktionalität auch auf Sammlungen angewendet werden.
Unten sehen Sie ein Beispiel für den PowerShell „like“-Operator und seinen case-sensitiven Bruder „clike“.
Der Operator „-notlike“ gibt den booleschen Wert „True“ zurück, wenn keine Übereinstimmung gefunden wurde, und „False“, wenn eine Übereinstimmung vorliegt. Bei Verwendung gegen eine Sammlung gibt er alle anderen Werte zurück, die nicht dem auf der rechten Seite des Operators „-notlike“ angegebenen Muster entsprechen. Um die Groß- und Kleinschreibung auf das Muster anzuwenden, verwenden Sie den Operator „-cnotlike“.
Übereinstimmung anhand eines regulären Ausdrucks.
Der PowerShell-ähnliche Operator und sein Verwandter sind praktisch, aber sobald Sie komplexere Übereinstimmungen benötigen, können Sie in die tiefe, dunkle Welt der regulären Ausdrücke (Regex) eintauchen. Mit den Operatoren match
und notmatch
können Sie äußerst komplexe Zeichenkettenübereinstimmungen mit Regex durchführen.
Ähnlich wie der PowerShell-ähnliche Operator vergleicht match
und sein Gegenteil notmatch
zwei Zeichenketten und gibt einen booleschen Wert True
oder False
zurück. Wie bei den anderen Operatoren kann das gleiche Verhalten auch für eine Sammlung angewendet werden, wie das folgende Beispiel zeigt.
Zusammenfassung
In diesem Artikel haben Sie den PowerShell-ähnlichen Operator und viele andere kennengelernt und gelernt, wie Sie jeden Operator für einzelne Werte und Sammlungen verwenden können. Sie haben gesehen, wie sich die Ausgabe je nach Operator und Skalar- oder Sammlungswert unterscheidet.
Zusätzlich haben Sie auch Operatoren mit Groß- und Kleinschreibung, Übereinstimmungsoperatoren, wie man basierend auf regulären Ausdrücken oder Platzhaltern übereinstimmt, und Enthaltensoperatoren gesehen, um zu testen, ob das Objekt einen bestimmten Wert enthält oder ob ein Wert in einem bestimmten Objekt vorhanden ist.
