PowerShell Enthält-Operator

Es gibt verschiedene Operatoren in PowerShell, die Elemente filtern/vergleichen oder finden können, die mit einem angegebenen Eingabestring übereinstimmen. Der -contains
ist einer der wichtigsten Vergleichsoperatoren, der als Containment-Typ-Operator klassifiziert wird.
Es gibt vier Haupt-Containment-Typ-Operatoren.
-contains
-notcontains
-in
-notin
In diesem Artikel konzentrieren wir uns nur auf den -contains
Operator. Dieser Operator gibt immer einen booleschen Wert (true/false) zurück, wenn es eine Übereinstimmung gibt. Auch in Bezug auf die Leistung ist der -contains
Operator recht schnell, um die Ergebnisse zurückzugeben, da er den Vergleich der Eingabe stoppt, sobald er die erste Übereinstimmung findet.
der -contains
Operator in PowerShell
Dieser Operator kann verwendet werden, um zu überprüfen, ob eine Sammlung ein bestimmtes Element enthält. Die Syntax lautet wie folgt.
[set / collection] -contains [test-value or test-object]
[set/collection]
kann eine Menge von Zeichenfolgenwerten (durch Kommas getrennt) sein, zum Beispiel "Hello"
oder "FOX", "2ndLane"
.
[test-value or test-object]
kann ein Element oder eine Menge von Elementen (Sammlung) sein, zum Beispiel "Hello"
oder "Hello", "FOX", "No2"
.
Überprüfen auf ein bestimmtes Element
- Beispiel 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
Ausgabe:
True
Das Eingabeelement/-wert ist "2ndLane"
und kann in der Sammlung/Menge auf der linken Seite gefunden werden. Daher ist das Ergebnis offensichtlicherweise True
.
- Beispiel 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Ausgabe:
False
Das Eingabeelement/-wert ist "NotInTheCollection"
und es ist nicht in der Sammlung auf der rechten Seite enthalten. Daher wurde der oben genannte Befehl als False
ausgewertet.
Die wichtige Tatsache über den -contains
Operator ist, dass er das genaue Eingabeelement innerhalb der gegebenen Sammlung/Menge überprüft. Der Befehl wird als False
ausgewertet, wenn ein Teil/Substring als Eingabeelement angegeben wird.
- Beispiel 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
Ausgabe:
False
Im obigen Beispiel ist das Eingabeelement das "StringGiven"
, aber es ist ein Substring des "FullStringGiven"
Element der Sammlung auf der rechten Seite. Daher stimmt das Eingabeelement nicht mit einem genauen Element aus der Sammlung auf der rechten Seite überein, und das Ergebnis ist False
, wie erwartet.
Überprüfen einer Menge von Elementen/Sammlung mit dem -contains
Operator in PowerShell
Einer der größten Vorteile des -contains
Operators ist, dass er verwendet werden kann, um zu prüfen, ob die gegebene Sammlung/Menge mit einer Eingabesammlung übereinstimmt. Es ist wichtig zu beachten, dass der Operator überprüft, ob die gleichen Instanzen auf der linken Seite (gegebene Sammlung) und der rechten Seite (Eingabesammlung/Test-Sammlung) existieren. Das bedeutet, dass diese Containment-Operatoren Referenzgleichheit verwenden, wenn das Eingabeobjekt (Testobjekt) eine Sammlung ist.
Beispiel 01
$leftsideobj = "Hello", "NewString1"
Hier weisen wir der Variablen $leftsideobj
die Menge von Elementen (Sammlung) zu.
$leftsideobj, "AnotherString" -contains $leftsideobj
Dann verwenden wir den -contains Operator, um eine Übereinstimmung zu finden.
Ausgabe:
True
Dieser Befehl wurde als True
ausgewertet. Denn die Eingabesammlung ist $leftsideobj
und dieselbe Instanz ist in der Sammlung auf der linken Seite verfügbar. Das bedeutet, die Referenzgleichheit wurde erfüllt. Daher ist das Ergebnis True
.
Beispiel 02
$newleftsideobj = "Hello", "Test"
Hier haben wir der Variablen $newleftsideobj
eine Sammlung zugewiesen, die die Elemente "Hello"
und "Test"
enthält.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Ausgabe:
False
Der oben genannte Befehl wurde als False
ausgewertet. Sie können sehen, dass die Eingabesammlung (rechte Seite) $newleftsideobj
ist, die indirekt die beiden Elemente "Hello"
und "Test"
repräsentiert. Wenn Sie die linke Seite betrachten, haben wir die Elemente "Hello"
und "Test"
zur Verfügung. Aber es erfüllt nicht die Referenzgleichheit. Deshalb ist die Ausgabe False
.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.