Aprendiendo el Operador “No Igual” en PowerShell con Ejemplos

Aparte de ser una herramienta de línea de comandos, PowerShell es un lenguaje de programación de Microsoft que te permite controlar y automatizar tus sistemas. PowerShell utiliza una sintaxis diferente para sus operadores que la mayoría de los lenguajes de programación.

Sin embargo, una vez que comprendas la sintaxis del operador de PowerShell, verás que no es difícil de usar. Uno de los operadores más comunes que utilizarás en PowerShell es el operador de No Igual (-ne). Este operador te permite probar si dos valores no son iguales entre sí.

En este artículo, aprenderás sobre el operador de No Igual de PowerShell y cómo usarlo con ejemplos.

Prerrequisitos

Este tutorial será una demostración práctica. Si deseas seguir, asegúrate de tener un sistema con PowerShell instalado. Este tutorial utiliza Windows 10 y PowerShell 7.

Uso del Operador de No Igual de PowerShell (Conceptos Básicos)

En resumen, el operador de No Igual de PowerShell (-ne) determina si el valor de dos objetos no es igual y devuelve un valor booleano basado en el resultado. Si los valores no son iguales, el resultado es Verdadero; de lo contrario, el resultado es Falso.

Pero, ¿cómo y cuándo se utiliza el operador de No Igual de PowerShell? Las secciones siguientes te enseñarán los conceptos básicos del operador de No Igual de PowerShell.

Comparación de Variables

Uno de los usos más comunes del operador de No Igual en PowerShell es comparar dos variables. Por ejemplo, supongamos que tienes dos variables, $a y $b, y quieres ver si son iguales. La sintaxis de la comparación es la siguiente:

$a -ne $b

Si los valores de $a y $b no son iguales, entonces esta comparación devolverá True. De lo contrario, devolverá Falso.

1. Ejecuta los siguientes comandos en tu consola de PowerShell para crear las variables que usarás como ejemplos. Las variables $a, $b, $c y $d representan diferentes valores. Puedes comparar cada uno de estos valores para probar si son iguales o no.

Asigna a $c y $d el mismo valor para ver cómo funciona el operador de No Igual en PowerShell con valores iguales.

$a = 1
$b = 2
$c = 3
$d = 3

2. Ahora, realiza la comparación de No Igual en PowerShell para ver si los valores de $a y $b no son iguales.

$a -ne $b

El resultado devuelve True porque el valor de $a es 1 y $b es 2, que no son iguales.

You will see a False output return, as shown in the image below, since the values of $c and $d are equal (3=3). variables with not equal values

3. Ahora compara las variables $c y $d para ver si tampoco son iguales.

$c -ne $d

Verás que devuelve un resultado de False, como se muestra en la imagen a continuación, ya que los valores de $c y $d son iguales (3=3).

Comparing variables with equal values

Comparando Valores

Cuando trabajas con PowerShell, no todos los objetos que deseas comparar están en variables. En este caso, puedes comparar directamente los valores con el operador de No Igual en PowerShell.

Por ejemplo, el siguiente comando compara dos valores directamente usando el operador de No Igual en PowerShell.

5 -ne 3

Verás que devuelve un valor de True, como se muestra a continuación, ya que los valores no son iguales.

Comparing different values using the PowerShell not equal operator

Por otro lado, comparar valores iguales devolverá Falso.

5 -ne 5
Comparing equal values using the PowerShell not equal operator

Eliminar un Valor del Array

El operador PowerShell No Igual devuelve un resultado booleano para indicar si dos valores no son iguales. Además de esa función, este operador también puede filtrar elementos de un array.

Por ejemplo, crea una variable llamada $numeros que contenga un array de números del 1 al 5.

# Crea un array que contenga números del 1 al 5.
$numbers = 1..5
# Muestra el array
$numbers
Storing an array

A continuación, ejecuta el siguiente comando para devolver el array excepto un número (4).

$numbers -ne 4

Y ahora puedes ver que el comando devolvió todos los números en el array excepto el número 4.

Filtering an array

Comparar Cadenas

Además de números, también puedes aplicar la comparación No Igual de PowerShell en cadenas.

1. Por ejemplo, supongamos que tienes dos cadenas, “Hola” y “Mundo”. Para determinar si las dos cadenas no son iguales, ejecuta el siguiente comando.

"Hello" -ne "World"

El resultado es Verdadero ya que “Hola” no es igual a “Mundo”.

Comparing unequal stings

2. Ahora compara las cadenas “Hola” y “hola” para ver si son iguales.

"Hello" -ne "hello"

Luego verás que el resultado es Falso porque “Hola” es igual a “hola”.

Comparing two strings

3. El operador No Igual de PowerShell no distingue entre mayúsculas y minúsculas. Como puedes ver en el paso anterior, “Hello” es igual a “hello”. Pero si necesitas sensibilidad a las mayúsculas y minúsculas al comparar valores de cadenas, sustituye el operador -ne con el operador -cne, que significa No Igual Sensible a Mayúsculas y Minúsculas.

"Hello" -cne "hello"

Como resultado, “Hello” y “hello” ya no son iguales según PowerShell.

“Hello” and “hello”

Uso del Operador No Igual de PowerShell en el Mundo Real (Ejemplos)

Ahora que comprendes el concepto básico del operador No Igual de PowerShell, las siguientes secciones te permitirán experimentar algunos de sus usos en el mundo real.

Monitoreo del Estado de los Servicios

A staple of Windows systems administration is monitoring the server service status. This task involves filtering out which services whose Status Is Not Running.

Por ejemplo, ejecuta el cmdlet Get-Service para mostrar todos los servicios en la máquina local.

Get-Service

Puedes ver todos los servicios detenidos y en ejecución en la salida a continuación.

Display all services

Ahora, para filtrar solo aquellos servicios que no están Ejecutándose, ejecuta el siguiente comando y aplica el operador -ne de la siguiente manera.

Get-Service | Where-Object {$_.Status -ne "Running"}

Como puedes ver a continuación, la columna Estado muestra solo los servicios detenidos después de aplicar la comparación No Igual de PowerShell.

Filtering non-running services

De igual manera, ejecuta el siguiente comando para devolver los servicios cuyo Estado No Es Detenido.

Get-Service | Where-Object {$_.Status -ne "Stopped"}

Esta vez, solo verás los servicios que están en ejecución.

Showing all running services

Combinando PowerShell No Igual con el operador AND

Además de hacer una comparación 1:1, puedes combinar la condición de No Igual de PowerShell con otro operador de comparación, como -eq (igual), utilizando el operador -and. Este método es útil cuando el objeto que estás comparando debe cumplir múltiples condiciones.

Por ejemplo, supervisar los servicios del servidor normalmente implica asegurarse de que todos los servicios automáticos estén en ejecución. Ejecuta el siguiente comando para listar todos los servicios cuyo Estado No Sea Ejecutándose y cuyo Tipo de Inicio Sea Automático. En este ejemplo, el valor del objeto debe cumplir todas las condiciones.

Get-Service | 
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} |
Select-Object Status,StartType,Name

Ahora puedes ver los servicios automáticos que no se están ejecutando, lo que te puede ayudar a decidir qué acciones debes tomar.

PowerShell Not Equal match all conditions

Agregando Lógica Condicional If/Else

También puedes usar el operador de No Igual de PowerShell dentro de declaraciones condicionales, como la declaración if/else.

Por ejemplo, en la mayoría de los casos, un servicio debe estar en ejecución si su valor de Tipo de Inicio es Automático. El script a continuación obtiene todos los servicios, verifica qué servicios automáticos no se están ejecutando y ejecuta la(s) acción(es) correctiva(s), como mostrar un mensaje y ejecutar el servicio.

Nota: La línea Start-Service $_.Name está comentada y no se ejecutará. Descomenta esta línea si quieres ejecutar el comando.

Copia el código a continuación y ejecútalo en PowerShell.

Get-Service -ErrorAction SilentlyContinue | ForEach-Object {
    if ($_.Status -ne 'Running' -and $_.StartType -eq 'Automatic') {
        "The service [$($_.Name)] StartType is [$($_.StartType)] but its current Status is [$($_.Status)]"
        # Iniciar-Servicio $_.Nombre
    }
}

El resultado muestra qué servicios automáticos no están en funcionamiento.

Using PowerShell Not Equal in Conditional Logic

Conclusión

En este artículo, aprendiste sobre el operador No Igual de PowerShell. También aprendiste cómo usarlo con ejemplos. En este punto, deberías tener una buena comprensión de cómo funciona.

Con este conocimiento recién adquirido, ahora puedes usar el operador No Igual en tus scripts de PowerShell para probar condiciones. Sin embargo, ten en cuenta que también están disponibles otros operadores de comparación. Es posible que desees combinar varios operadores para probar condiciones más complejas.

Source:
https://adamtheautomator.com/powershell-not-equal/