Verständnis der PowerShell EQ-Operatoren

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

$string = 'Adam'
if ($string = 'Adam') {
    'string is equal to Adam'
}

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.

PowerShell’s eq vs ceq

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:

Using Eq to search arrays

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.

PowerShells ne vs. cne

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.

Source:
https://adamtheautomator.com/powershell-eq/