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.
