¿Estás luchando por entender los operadores de comparación de PowerShell como eq
, ne
, ceq
y cne
? Si es así, sigue leyendo.
Proveniente de un fondo de desarrollo de software, la primera vez que tuve un momento de “¿Qué?” fue cuando vi por primera vez los operadores de comparación de PowerShell eq
, ceq
, cne
, etc. Todos los demás lenguajes tienen operadores de comparación, pero no exactamente como PowerShell. Estaba acostumbrado a ==
y <>
.
No solo la sintaxis se ve completamente diferente que en tu lenguaje de programación típico, sino que también se comportan de manera diferente al comparar colecciones de valores.
Es algo que realmente me desconcertó al aprender sobre PowerShell, pero ahora parece como ese viejo adagio sobre la cerveza; es un gusto adquirido.
Veamos brevemente qué es un operador de comparación si no estás familiarizado y profundicemos en las sutilezas que introduce PowerShell. En poco tiempo, podrás manejar los operadores en tus scripts de PowerShell sin ningún problema.
Como mencioné, todos los lenguajes de programación/automatización tienen operadores de comparación. En su sentido más básico, los operadores de comparación son necesarios para evaluar cómo se comparan cosas diferentes entre sí. Se utilizan para tomar dos objetos y ver cuál es la diferencia (si la hay) entre esos dos objetos.
En el caso de PowerShell, los operadores también pueden utilizarse para encontrar elementos dentro de colecciones de valores.
Para esta publicación, voy a repasar los operadores de igualdad y cómo PowerShell los utiliza. Estos son eq
y ne
con sus contrapartes sensibles a mayúsculas y minúsculas ceq
y cne
. Para obtener una lista completa, puedes ir al sitio Technet o simplemente usar Get-Help about_comparison_operators
en tu consola de PowerShell.
PowerShell -EQ y -CEQ
Si alguna vez necesitas verificar si un objeto es igual a otro objeto, debes usar los operadores eq
(insensible a mayúsculas y minúsculas) o ceq
(sensible a mayúsculas y minúsculas). Estos operadores prueban el valor de cada entidad que deseas comparar.
Cuando comencé a aprender PowerShell, constantemente hacía algo como esto
Pronto te darás cuenta de que no debes hacer eso. El signo =
es un operador de asignación, NO un operador de comparación. No puedes usar el signo =
para comparar un valor con otro.
La manera correcta de hacer esto es definir el valor a verificar en el lado izquierdo de la expresión y usar el operador eq
. Aquí tienes un ejemplo de los operadores eq
y ceq
y cómo se usan.

¿Notaste cómo eq
devolvió un valor booleano True
al comparar nuestra variable con adam
, pero ceq
devolvió un valor booleano False
? Esto muestra la diferencia de sensibilidad a las mayúsculas y minúsculas entre los dos operadores.
Esto es todo muy bueno para valores escalares (únicos), pero también puedes encontrar todas las instancias de valores particulares utilizando estos operadores. Por ejemplo, utiliza el operador PowerShell -eq para filtrar elementos en una matriz:

Si tienes una variable con una colección de valores, como una matriz, puedes usar eq
y ceq
para encontrar todas las instancias de valores dentro de la colección.
Observa que encontró todas las instancias del número entero 9 que intentamos comparar. Utilizo este método práctico todo el tiempo.
-NE y -CNE
Por otro lado, tienes tanto ne
como cne
. Son exactamente lo opuesto de eq
y ceq
, pero muestran el mismo comportamiento solo que de manera opuesta. No prueban la igualdad, sino la desigualdad.

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.