Você está com dificuldade em entender os operadores de comparação do PowerShell, como eq
, ne
, ceq
e cne
? Se sim, continue lendo.
Vindo de um background de desenvolvimento de software, a primeira vez que eu fiquei confuso foi quando vi pela primeira vez os operadores de comparação do PowerShell, como eq
, ceq
, cne
, etc. Todas as outras linguagens têm operadores de comparação, mas não exatamente como o PowerShell. Eu estava acostumado com ==
e <>
.
Não apenas a sintaxe parece completamente diferente das linguagens de programação tradicionais, mas também se comportam de forma diferente ao comparar coleções de valores.
Isso me deixou realmente confuso quando estava aprendendo sobre o PowerShell, mas agora parece ser algo como o famoso ditado sobre cerveja; é um gosto adquirido.
Vamos dar uma breve olhada no que é um operador de comparação, caso você não esteja familiarizado, e explorar mais a fundo as nuances que o PowerShell introduz. Em pouco tempo, você será capaz de usar operadores em seus scripts do PowerShell sem problemas.
Como mencionei, todas as linguagens de programação/script têm operadores de comparação. Em seu sentido mais básico, os operadores de comparação são necessários para avaliar como coisas diferentes se comparam a outras coisas. Eles são usados para pegar dois objetos e ver qual é a diferença (se houver) entre esses dois objetos.
No caso do PowerShell, os operadores também podem ser usados para encontrar elementos dentro de coleções de valores.
Para esta postagem, vou abordar os operadores de igualdade e como o PowerShell os utiliza. Estes são eq
e ne
com seus equivalentes sensíveis a maiúsculas e minúsculas ceq
e cne
. Para uma lista completa, você pode visitar o site da Technet ou simplesmente usar Get-Help about_comparison_operators
no seu console do PowerShell.
PowerShell -EQ e -CEQ
Se você precisar verificar se um objeto é igual a outro objeto, você deve usar os operadores eq
(não diferencia maiúsculas de minúsculas) ou ceq
(diferencia maiúsculas de minúsculas). Esses operadores testam o valor de cada entidade que você deseja comparar.
Quando comecei a aprender o PowerShell, costumava fazer algo assim
Você logo perceberá que isso não é adequado. O sinal =
é um operador de atribuição, NÃO um operador de comparação. Você não pode usar o sinal =
para comparar um valor com outro.
A maneira correta de fazer isso é definir o valor a ser verificado no lado esquerdo da expressão e usar o operador eq
. Aqui está um exemplo dos operadores eq
e ceq
e como eles são usados.

Observe como eq
retornou um valor booleano True
ao comparar nossa variável com adam
, mas ceq
retornou um valor booleano False
? Isso mostra a diferença de sensibilidade a maiúsculas e minúsculas entre os dois operadores.
Isso é tudo muito bom para valores escalares (únicos), mas também é possível encontrar todas as instâncias de valores específicos usando esses operadores. Por exemplo, utilize o operador PowerShell -eq para filtrar itens em uma matriz:

Se você tiver uma variável com uma coleção de valores, como uma matriz, pode usar eq
e ceq
para encontrar todas as instâncias de valores dentro da coleção.
Observe que encontrou todas as instâncias do inteiro 9 que tentamos comparar. Eu uso esse método útil o tempo todo.
-NE e -CNE
Na outra extremidade, existem ne
e cne
. São exatamente o oposto de eq
e ceq
, mas exibem o mesmo comportamento, apenas ao contrário. Eles não testam a igualdade, mas sim a desigualdade.

I hope this gives a good explanation of the equality comparison operators. This really got me hung up as a newbie and it never really clicked for me until I was just beat into submission by error messages. I hope this post prevents the same beat down I received.