Variables nulas en PowerShell

Marion Paul Kenneth Mendoza 18 septiembre 2023
  1. Introducción a la variable nula en PowerShell
  2. Impactos de la variable nula en PowerShell
  3. Comprobación de valores nulos en PowerShell
Variables nulas en PowerShell

PowerShell trata el objeto $Null con el valor nulo, y algunos comandos requieren alguna salida para generar. Generan valor a nulo si hay algún error y también pueden ser útiles en el propósito de resolución de problemas en las secuencias de comandos para verificar si el comando genera algún valor.

Este artículo habla sobre la variable nula, los impactos de usar la variable nula en diferentes sintaxis en PowerShell y las formas de verificar los valores nulos.

Introducción a la variable nula en PowerShell

Podemos pensar en NULL como un valor desconocido o vacío. Por ejemplo, una variable es NULL hasta que asigna un valor u objeto.

Esta variable puede ser importante porque algunos comandos requieren un valor y generan errores si el valor es NULL.

La variable $null es una variable automática en PowerShell que se usa para representar NULL. Podemos asignarlo a variables, usarlo en comparaciones y usarlo como marcador de posición para NULL en una colección.

PowerShell trata $null como un objeto con el valor NULL. Por lo tanto, esta variable es diferente a lo que puede esperar si viene de otro idioma.

Impactos de la variable nula en PowerShell

Los valores $null afectarán su código de manera diferente dependiendo de dónde aparezcan.

Impacto en cadenas

Si usa $null en una cadena, será un valor en blanco (o una cadena vacía).

$value = $null
Write-Output "The value is $value."

Producción :

The value is .

Esta variable es una de las razones por las que tenemos que colocar corchetes alrededor de las variables cuando las usamos en los mensajes de registro. Es aún más importante identificar los bordes de los valores de las variables cuando el valor se encuentra al final de la cadena.

$value = $null
Write-Output "The value is [$value]"

Producción :

The value is []

Esta variable hace que las cadenas vacías y los valores $null sean fáciles de detectar.

Impacto en las ecuaciones numéricas

Cuando se utiliza una variable $null en una ecuación numérica, nuestros resultados no serán válidos si no dan un error. A veces, la variable $null se evaluará como 0, y otras veces hará que el resultado completo sea $null.

Aquí hay un ejemplo que implica una multiplicación que da 0 o $null según el orden de los valores.

$null * 5
$null -eq ( $null * 5 )

Producción:

True

Impacto en las colecciones

Una colección nos permite usar un índice para acceder a los valores. Si intentamos indexar en una colección nula, obtendremos este error: No se puede indexar en una matriz nula.

$value = $null
$value[10]

Producción :

Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

Tenemos una colección, pero intenta acceder a un elemento que no está en la colección y obtendrás un resultado $null.

$array = @( 'one', 'two', 'three' )
$null -eq $array[100]

Producción :

True

Impactos en objetos

Si intentamos acceder a una propiedad o subpropiedad de un objeto sin una propiedad específica, podemos obtener una variable $null como lo haría con una variable indefinida. No importa si el valor es $null o un objeto real en este caso.

$null -eq $undefined.not.existing

Producción :

True

Impactos en los métodos

Llamar a un método en una variable $null lanzará una excepción RuntimeException.

$value = $null
$value.toString()

Producción :

You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Siempre que veamos la frase No se puede llamar a un método en una expresión de valor nulo, podemos buscar lugares para llamar a un método en una variable sin comprobar primero los valores $null.

Comprobación de valores nulos en PowerShell

Siempre colocamos la variable $null a la izquierda cuando buscamos valores $null en los ejemplos.

Este estilo de escritura es intencional y se acepta como una mejor práctica de PowerShell. Sin embargo, hay algunos escenarios en los que colocarlo a la derecha no le dará el resultado esperado.

Veamos el siguiente ejemplo e intentemos predecir cuáles serán los resultados:

if ( $value -eq $null ){
    'The array is $null'
}

if ( $value -ne $null ){
    'The array is not $null'
}

Si no definimos $value, el primero evaluará $true, y nuestro mensaje será The array is $null. La advertencia aquí es que es posible crear un $valor que permita que ambos resultados sean $falso.

Producción :

$value = @( $null )

En este caso, la variable $value es una matriz que contiene un $null.

El operador -eq comprobará todos los valores de la matriz y devolverá el $null que coincida (esto se evalúa como $false). El operador -ne devolverá todo lo que no coincida con el valor $null, y en este caso, no hay resultados (Esto también se evaluará como $false).

Entonces ninguno de los dos será $true aunque uno de ellos debería serlo.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - PowerShell Variable