PowerShell contains Operator
In PowerShell sind verschiedene Operatoren verfügbar, die Elemente filtern/vergleichen oder finden können, die mit einer bestimmten Eingabezeichenfolge übereinstimmen. -contains
ist einer der wichtigsten Vergleichsoperatoren, der als Containment-Operator klassifiziert wird.
Es gibt vier Hauptoperatoren für Containment-Typen.
-contains
-notcontains
-in
-notin
In diesem Artikel konzentrieren wir uns nur auf den Operator -contains
. Dieser Operator gibt bei Übereinstimmung immer einen booleschen Wert (true/false) zurück. Auch der leistungsbezogene Operator -contains
gibt die Ergebnisse ziemlich schnell zurück, da er den Vergleich der Eingabe beendet, sobald er die erste Übereinstimmung findet.
Der -contains
-Operator in PowerShell
Mit diesem Operator kann überprüft werden, ob eine Collection ein bestimmtes Element enthält. Seine Syntax ist wie folgt.
[set/collection] -contains [test-value or test-object]
[set/collection]
kann ein Satz von Zeichenkettenwerten sein (kommagetrennt), 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"
.
Suchen Sie nach einem bestimmten Element
- Beispiel 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
Ausgabe:
True
Das Eingabeelement/der Eingabewert ist "2ndLane"
und kann sich in der Sammlung/dem Satz auf der linken Seite befinden. Daher ist die Ausgabe/das Ergebnis offensichtlich True
.
- Beispiel 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Ausgabe:
False
Das Eingabeelement/der Eingabewert ist "NotInTheCollection"
und ist nicht in der Sammlung auf der rechten Seite enthalten. Daher wurde der obige Befehl mit False
bewertet.
Die wichtige Tatsache beim -contains
-Operator ist, dass er nach dem genauen Eingabeelement innerhalb der angegebenen Sammlung/des angegebenen Satzes sucht. Der Befehl wird als False
ausgewertet, wenn als Eingabeelement ein Teil/Substring angegeben wurde.
- Beispiel 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
Ausgabe:
False
Im obigen Beispiel ist das Eingabeelement "StringGiven"
, aber es ist ein Teilstring des Elements "FullStringGiven"
der Sammlung auf der rechten Seite. Daher stimmt das Eingabeelement nicht mit einem exakten Element aus der Sammlung auf der rechten Seite überein, und das Ergebnis ist wie erwartet False
.
Suchen Sie mit dem -contains
-Operator in PowerShell nach einem Satz von Elementen/Sammlungen
Einer der größten Vorteile des Operators -contains
besteht darin, dass er verwendet werden kann, um herauszufinden, ob die angegebene Sammlung/das angegebene Set mit einer Eingabesammlung übereinstimmt. Dabei ist zu beachten, dass der Operator prüft, ob auf der linken Seite (gegebene Collection) und der rechten Seite (Input-Collection/Test-Collection) die gleichen Instanzen 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 Elementmenge (Sammlung) die Variable $leftsideobj
zu.
$leftsideobj, "AnotherString" -contains $leftsideobj
Dann verwenden wir den Operator -contains, um eine Übereinstimmung zu finden.
Ausgabe:
True
Dieser Befehl wurde mit True
ausgewertet. Weil die Eingabesammlung $leftsideobj
ist und dieselbe Instanz in der Sammlung auf der linken Seite verfügbar ist. Es bedeutet, dass die Referenzgleichheit erfüllt ist. Daher ist das Ergebnis True
.
Beispiel 02
$newleftsideobj = "Hello", "Test"
Hier haben wir die Variable $newleftsideobj
einer Sammlung zugewiesen, die die Elemente "Hello"
und "Test"
enthält.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Ausgabe:
False
Der obige Befehl wurde mit False
ausgewertet. Sie sehen, dass die Eingabesammlung (rechte Seite) $newleftsideobj
ist, was indirekt die beiden Elemente "Hello"
und "Test"
enthält. Wie Sie auf der linken Seite sehen, stehen die Elemente "Hello"
und "Test"
zur Verfügung. Aber es erfüllt nicht die Referenzgleichheit. Deshalb ist der Ausgang 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.