Variables nulas en PowerShell
- Introducción a la variable nula en PowerShell
- Impactos de la variable nula en PowerShell
- Comprobación de valores nulos 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn