Operador Contains do PowerShell

Existem diferentes operadores disponíveis no PowerShell que podem filtrar/comparar ou encontrar elementos que correspondem a uma string de entrada especificada. O -contains
é um dos principais operadores de comparação, classificado como um operador do tipo Containment.
Existem quatro principais operadores de tipo containment.
-contains
-notcontains
-in
-notin
Neste artigo, estamos focando apenas no operador -contains
. Este operador sempre retorna um valor Booleano (verdadeiro/falso) se houver uma correspondência. Além disso, em termos de desempenho, o operador -contains
é bastante rápido para retornar os resultados porque para de comparar a entrada assim que encontra a primeira correspondência.
o operador -contains
no PowerShell
Este operador pode ser usado para verificar se uma coleção contém um elemento específico. Sua sintaxe é a seguinte.
[set / collection] -contains [test-value or test-object]
[set/collection]
pode ser um conjunto de valores de string (separados por vírgula), por exemplo, "Hello"
ou "FOX", "2ndLane"
.
[test-value or test-object]
pode ser um elemento ou conjunto de elementos (coleção), por exemplo, "Hello"
ou "Hello", "FOX", "No2"
.
Verificar um Certo Elemento
- Exemplo 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
Saída:
True
O elemento/valor de entrada é "2ndLane"
e pode ser localizado na coleção/conjunto do lado esquerdo. Portanto, a saída/resultado é obviamente True
.
- Exemplo 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
Saída:
False
O elemento/valor de entrada é "NotInTheCollection"
e não está incluído na coleção do lado direito. Portanto, o comando acima foi avaliado como False
.
O fato importante sobre o operador -contains
é que ele verifica o elemento de entrada exato dentro da coleção/conjunto dado. O comando será avaliado como False
quando uma parte/substring for dada como o elemento de entrada.
- Exemplo 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
Saída:
False
No exemplo acima, o elemento de entrada é a "StringGiven"
, mas é uma substring do elemento "FullStringGiven"
da coleção do lado direito. Portanto, o elemento de entrada não corresponde a um elemento exato da coleção do lado direito, e o resultado é False
, como esperado.
Verificar um Conjunto de Elementos/Coleção com o Operador -contains
no PowerShell
Uma das maiores vantagens do operador -contains
é que ele pode ser usado para descobrir se a coleção/conjunto dado corresponde a uma coleção de entrada. É importante ter em mente que o operador verifica se as mesmas instâncias existem do lado esquerdo (coleção dada) e do lado direito (coleção de entrada/coleta de teste). Isso significa que esses operadores de containment usam igualdade de referência quando o objeto de entrada (test-object) é uma coleção.
Exemplo 01
$leftsideobj = "Hello", "NewString1"
Aqui, atribuimos a variável $leftsideobj
ao conjunto de elementos (coleção).
$leftsideobj, "AnotherString" -contains $leftsideobj
Então, usamos o operador -contains para encontrar uma correspondência.
Saída:
True
Este comando foi avaliado como True
. Porque a coleção de entrada é $leftsideobj
e a mesma instância está disponível na coleção do lado esquerdo. Isso significa que a igualdade de referência foi cumprida. Portanto, o resultado é True
.
Exemplo 02
$newleftsideobj = "Hello", "Test"
Aqui, temos a variável $newleftsideobj
atribuída a uma coleção que contém os elementos "Hello"
e "Test"
.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
Saída:
False
O comando acima foi avaliado como False
. Você pode ver que a coleção de entrada (lado direito) é $newleftsideobj
, que indiretamente contém os dois elementos "Hello"
e "Test"
. Se você notar do lado esquerdo, temos os elementos "Hello"
e "Test"
disponíveis. Mas isso não satisfaz a igualdade de referência. É por isso que a saída é 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.