Olá pessoal, tudo bem? Espero que sim!

Hoje vamos continuar a nossa jornada de introdução ao Powershell abordando os Operadores de Comparação que inclusive, já foram utilizados em alguns exemplos e scripts disponibilizados aqui no blog, então, nada mais justo que entrarmos no detalhe.

O que são Operadores de Comparação?

Os Operadores de Comparação são instruções lógicas que nos permite comparar valores de objetos, matriz, listas ou tabelas e são comumente utilizados para a criação de testes lógicos com o objetivo de encontrar ou filtrar um valor, cadeia de valores ou mesmo objetos. Eles são classificados por tipo e são declarados precedidos por hífen (““).  Na tabela abaixo, você irá conhecer os operadores e seus respectivos tipos:

Tipo Operador Descrição
Igualdade -eq É igual a
-ne Não é igual
-gt Maior que
-ge Maior ou igual
-lt Menor que
-le Menor ou igual
Correspondência -like Retorna TRUE (verdadeiro) quando a string (texto) corresponde a curinga (wildcard)
-notlike Retorna TRUE (verdadeiro) quando a string (texto) não corresponde a curinga (wildcard)
-match Retorna TRUE (verdadeiro) quando a string (texto) corresponde a regex (expressão regular)
-notmatch Retorna TRUE (verdadeiro) quando a string (texto) não corresponde a regex (expressão regular)
Conteúdo -contains Retorna TRUE (verdadeiro) quando o valor de referência estiver contido em uma coleção
-notcontains Retorna TRUE (verdadeiro) quando o valor de referência não estiver contido em uma coleção
-in Retorna TRUE (verdadeiro) quando o valor do teste contido em uma coleção
-notin Retorna TRUE (verdadeiro) quando o valor do teste não está contido em uma coleção
Substituição -replace Substitui um padrão de string (texto)
Divisão -split Divide uma ou mais seqüências de caracteres em substrings
Tipos de Objeto -is Retorna TRUE (verdadeiro) se ambos os objetos forem iguais
-isnot Retorna TRUE (verdadeiro) se os objetos não forem iguais

Operadores de Igualdade

Os operadores de igualdade comparam se valores de entrada possuem correspondência exatamente idêntica (no caso de -eq e -ne) a outro valor ou objeto. Também podem realizar comparações por ordem de grandeza (no caso de -gt, -lt), ou combiná-la com o critério igualdade (no caso de -ge ou -le).

-eq (Igual a)

Exemplo:

-ne (Não igual a)

Exemplo:

-gt (Maior que)

Exemplo:

-ge (Maior que ou igual a)

Exemplo:

-lt (Menor que)

Exemplo:

-le (Menor que ou igual a)

Exemplo:

Operadores de Correspondência

Os operadores de correspondência encontram valores baseados em expressões, que retornarão o valor procurado utilizando o caractere wildcard (curinga) “*” (no caso de -like e -notlike) ou expressões regulares (no caso de -match e -notmatch), que retornarão um valor booleano (Verdadeiro ou Falso). No caso do uso de -match ou -notmatch, é possível consultar os valores correspondidos da busca através da variável $Matches, gerada automaticamente após a execução do teste lógico. Assim como nos outros testes que retornam valores booleanos, quando mais de um valor é declarado como entrada para o teste, o valor procurado será retornado se for encontrado.

Obs: Abordaremos Expressões Regulares em um próximo post.

-like (É como)

Exemplo:

-notlike (Não é como)

Exemplo:

-match (Combina)

Exemplo:

-notmatch (Não combina)

Exemplo:

Operadores de Conteúdo

Os operadores de conteúdo indicarão se o valor procurado se faz presente no objeto de pesquisa. O valor retornado sempre será booleano (Verdadeiro ou Falso).

-contains (Contém)

Exemplo:

-notcontains (Não contém)

Exemplo:

-in (Está em)

Exemplo:

-notin (Não está em)

Exemplo:

Operadores de Substituição

Os operadores de substituição são utilizados para substituir um valor encontrado por outro.

-replace (Substituir)

Exemplo:

Operadores de Divisão

Os operadores de divisão são utilizados para dividir ou quebrar a linha a cada vez que encontrar um caractere especificado.

-split (Dividir)

Exemplo:

Operadores de Comparação de Tipos de Objetos

Recapitulando, conforme abordado no post #7, existem diversos tipos de valores para parâmetros de Funções. Estes mesmos tipos valores também estão disponíveis para uma propriedade em um Objeto. Vamos relembrar quais são observando a tabela abaixo:

[int] Inteiro assinado de 32 bits
[long] Inteiro assinado de 64 bits
[string] Cadeia de comprimento fixo de caracteres Unicode
[char] Caractere Unicode de 16 bits
[bool] Valor Verdadeiro ou Falso
[byte] Inteiro não assinado de 8 bits
[double] Número de ponto flutuante de precisão dupla de 64 bits
[decimal] Valor decimal de 128 bits
[single] Número de ponto flutuante de 32 bits de precisão simples
[array] Matriz de valores
[xml] Objeto de Documento XML
[hashtable] Objeto Hashtable (semelhante a um objeto Dicionário)

Os operadores de comparação de tipos de objetos são utilizados para determinar se um objeto é de um tipo específico.

-is (É)

Exemplo:

-isnot (Não é)

Exemplo:

Case Sensitive (maiúsculas e minúsculas)

Você pode se deparar em algum caso em que precise realizar um teste lógico que requer um refinamento maior, em alguns casos considerando as letras maiúsculas e minúsculas. No caso de todos os operadores de comparação, você pode habilitar o case sensitive adicionando a letra “c” no início de cada operador, por exemplo: -ceq, -cne, -clike, -ccontains, -cmatch, -cis, etc.  Com exceção dos operadores de comparação de tipos de objetos, se você obrigatoriamente não quer utilizar case sensitive, você pode utilizar a letra “i” no início de cada operador, por exemplo: -ieq, -ine, -ilike, -icontains, -imatch, etc.

Exemplos:

Conclusão

Não existem muitas restrições na hora de utilizar os Operadores de Comparação. Eles te permitem recuperar valores em quaisquer objetos manipuláveis pelo Powershell e são peças-chave para realizar uma instrução de operação em massa. Quando estiver com alguma dúvida ou precisar de mais informações sobre o tema, você pode executar o seguinte script em seu shell:

É isso aí galera, por hoje é só. Até o próximo post!

Gostou ou ainda está com dúvidas? Deixe seu comentário!

Não se esqueçam de curtir a página do blog no Facebook aqui na barra lateral!

Dúvidas sobre o blog, sugestões, críticas? Entre em contato aqui!