Êtes-vous en difficulté pour comprendre les opérateurs de comparaison PowerShell tels que eq
, ne
, ceq
et cne
? Si c’est le cas, lisez la suite.
En venant d’un milieu de développement logiciel, ma première réaction de perplexité a été lorsque j’ai vu pour la première fois les opérateurs de comparaison PowerShell tels que eq
, ceq
, cne
, etc. Toutes les autres langues ont des opérateurs de comparaison, mais pas tout à fait comme PowerShell. J’étais habitué à ==
et <>
.
Non seulement la syntaxe semble complètement différente des langages de programmation typiques, mais ils se comportent également différemment lorsqu’il s’agit de comparer des collections de valeurs.
C’est quelque chose qui m’a vraiment déconcerté en apprenant PowerShell, mais maintenant cela ressemble à cet adage sur la bière; c’est une question de goût acquis.
Passons brièvement en revue ce qu’est un opérateur de comparaison, si vous n’êtes pas familier, et plongeons plus profondément dans les subtilités que PowerShell introduit. Avant longtemps, vous pourrez manier les opérateurs dans vos scripts PowerShell sans problème.
Comme je l’ai mentionné, tous les langages de programmation/scripting ont des opérateurs de comparaison. Dans leur sens le plus basique, les opérateurs de comparaison sont nécessaires pour évaluer comment différentes choses se comparent les unes aux autres. Ils sont utilisés pour prendre deux objets et voir quelle est la différence (s’il y en a) entre ces deux objets.
Dans le cas de PowerShell, les opérateurs peuvent également être utilisés pour trouver des éléments à l’intérieur de collections de valeurs.
Pour ce post, je vais passer en revue les opérateurs d’égalité et comment PowerShell les utilise. Il s’agit de eq
et ne
avec leurs homologues sensibles à la casse ceq
et cne
. Pour une liste complète, vous pouvez consulter le site Technet ou simplement utiliser Get-Help about_comparison_operators
dans votre console PowerShell.
PowerShell -EQ et -CEQ
Si vous devez vérifier si un objet est égal à un autre objet, vous devez utiliser les opérateurs eq
(insensible à la casse) ou ceq
(sensible à la casse). Ces opérateurs testent la valeur de chaque entité que vous souhaitez comparer.
Lorsque j’ai commencé à apprendre PowerShell, je faisais constamment quelque chose comme ça
Vous serez bientôt assez averti de ne pas faire cela. Le signe =
est un opérateur d’assignation, PAS un opérateur de comparaison. Vous ne pouvez pas utiliser le signe =
pour comparer une valeur à une autre.
La bonne façon de faire cela est de définir la valeur à vérifier du côté gauche de l’expression et d’utiliser l’opérateur eq
. Voici un exemple des opérateurs eq
et ceq
et comment ils sont utilisés.

Remarquez comment eq
a renvoyé une valeur booléenne True
lors de la comparaison de notre variable avec adam
, mais ceq
a renvoyé une valeur booléenne False
? Cela montre la différence de sensibilité à la casse entre les deux opérateurs.
C’est tout à fait bien pour les valeurs scalaires (simples), mais vous pouvez également trouver toutes les instances de valeurs particulières en utilisant également ces opérateurs. Par exemple, utilisez l’opérateur PowerShell -eq pour filtrer les éléments dans un tableau :

Si vous avez une variable avec une collection de valeurs telles qu’un tableau, vous pouvez utiliser eq
et ceq
pour trouver toutes les instances de valeurs à l’intérieur de la collection.
Remarquez qu’il a trouvé toutes les instances de l’entier 9 que nous avons essayé de comparer. J’utilise cette méthode pratique tout le temps.
-NE et -CNE
D’un autre côté, vous avez à la fois ne
et cne
. Ils sont exactement l’opposé de eq
et ceq
mais affichent le même comportement exactement opposé. Ils ne testent pas l’égalité, ils testent l’inégalité.

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.