PowerShell contains Operator

Migel Hewage Nimesha 1 April 2022
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.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

Verwandter Artikel - PowerShell Operator