Sind Sie beim Verständnis von PowerShell-Vergleichsoperatoren wie eq
, ne
, ceq
und cne
unsicher? Wenn ja, lesen Sie weiter.
Als jemand mit einem Hintergrund in der Softwareentwicklung hatte ich das erste Mal ein „Hä?“-Erlebnis, als ich zum ersten Mal auf die PowerShell-Vergleichsoperatoren eq
, ceq
, cne
usw. stieß. Alle anderen Sprachen haben Vergleichsoperatoren, aber nicht ganz wie PowerShell. Ich war es gewohnt, ==
und <>
zu verwenden.
Nicht nur die Syntax sieht völlig anders aus als in Ihrer typischen Programmiersprache, sondern sie verhalten sich auch anders, wenn es um den Vergleich von Wertesammlungen geht.
Dies hat mich wirklich verwirrt, als ich mich mit PowerShell beschäftigte, aber jetzt scheint es wie das alte Biermotto zu sein: Es ist eine erworbene Geschmackssache.
Lassen Sie uns kurz darüber sprechen, was ein Vergleichsoperator ist, falls Sie damit nicht vertraut sind, und tiefer in die Feinheiten eintauchen, die PowerShell einführt. Bald werden Sie in der Lage sein, Operatoren in Ihren PowerShell-Skripten problemlos zu verwenden.
Wie ich bereits erwähnt habe, haben alle Programmier-/Skriptsprachen Vergleichsoperatoren. In ihrem einfachsten Sinne sind Vergleichsoperatoren notwendig, um zu bewerten, wie sich verschiedene Dinge im Vergleich zu anderen Dingen verhalten. Sie werden verwendet, um zwei Objekte zu nehmen und zu sehen, was der Unterschied (falls vorhanden) zwischen diesen beiden Objekten ist.
In PowerShell können Operatoren auch verwendet werden, um Elemente innerhalb von Wertesammlungen zu finden.
Für diesen Beitrag werde ich die Gleichheitsoperatoren und deren Verwendung in PowerShell behandeln. Dabei handelt es sich um eq
und ne
sowie deren Fall-sensitiven Gegenstücke ceq
und cne
. Für eine vollständige Liste können Sie die Technet-Website besuchen oder einfach Get-Help about_comparison_operators
in Ihrer PowerShell-Konsole verwenden.
PowerShell -EQ und -CEQ
Wenn Sie jemals überprüfen müssen, ob ein Objekt einem anderen Objekt entspricht, müssen Sie die Operatoren eq
(fallunabhängig) oder ceq
(fallsensitiv) verwenden. Diese Operatoren testen den Wert jeder Entität, die Sie vergleichen möchten.
Als ich anfing, PowerShell zu lernen, habe ich ständig etwas Ähnliches wie das hier gemacht
Sie werden bald genug geschlagen werden, um das nicht zu tun. Das =
-Zeichen ist ein Zuweisungsoperator und KEIN Vergleichsoperator. Sie können das =
-Zeichen nicht verwenden, um einen Wert mit einem anderen zu vergleichen.
Der richtige Weg, dies zu tun, besteht darin, den Wert, den Sie überprüfen möchten, auf der linken Seite des Ausdrucks zu definieren und den eq
-Operator zu verwenden. Hier ist ein Beispiel für die Verwendung der eq
und ceq
-Operatoren.

Bemerken Sie, wie eq
einen booleschen Wert True
zurückgegeben hat, als unser Variable mit adam
verglichen wurde, aber ceq
einen booleschen Wert False
zurückgegeben hat? Dies zeigt den Unterschied in der Groß- und Kleinschreibung zwischen den beiden Operatoren.
Das ist alles gut und schön für skalare (einzeln) Werte, aber Sie können auch alle Instanzen bestimmter Werte mit diesen Operatoren finden. Verwenden Sie beispielsweise den PowerShell -eq Operator, um Elemente in einem Array zu filtern:

Wenn Sie eine Variable mit einer Sammlung von Werten wie einem Array haben, können Sie eq
und ceq
verwenden, um alle Instanzen von Werten innerhalb der Sammlung zu finden.
Beachten Sie, dass es alle Instanzen der Ganzzahl 9 gefunden hat, die wir vergleichen wollten. Ich benutze diese praktische Methode die ganze Zeit.
-NE und -CNE
Auf der anderen Seite gibt es sowohl ne
als auch cne
. Sie sind genau das Gegenteil von eq
und ceq
, zeigen aber genau das gleiche Verhalten nur entgegengesetzt. Sie testen nicht auf Gleichheit, sondern auf Ungleichheit.

I hope this gives a good explanation of the equality comparison operators. This really got me hung up as a newbie and it never really clicked for me until I was just beat into submission by error messages. I hope this post prevents the same beat down I received.