Compréhension des opérateurs EQ de PowerShell

Ê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

$string = 'Adam'
if ($string = 'Adam') {
    'string is equal to Adam'
}

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.

PowerShell’s eq vs ceq

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 :

Using Eq to search arrays

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é.

PowerShells ne vs. cne

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.

Source:
https://adamtheautomator.com/powershell-eq/