Variables nulas en PowerShell
- Introducción a la Variable Nula en PowerShell
- Impactos de la Variable Nula en PowerShell
- Comprobar Valores Nulos en PowerShell
- Conclusión

PowerShell trata el objeto $Null
con el valor nulo, y algunos comandos requieren alguna salida para generar. Generan el valor nulo si hay algún error y también pueden ser útiles en el propósito de solución de problemas en los scripts para comprobar 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 formas de comprobar 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 se le asigna un valor u objeto.
Esta variable puede ser importante porque algunos comandos requieren un valor y fallarán si el valor es NULL.
La variable $null
es una variable automática en PowerShell utilizada para representar NULL. Podemos asignarla a variables, usarla en comparaciones y usarla como un 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 de lo que podrías esperar si vienes de otro lenguaje.
Impactos de la Variable Nula en PowerShell
El comportamiento de los valores $null
puede variar dependiendo de dónde aparezcan dentro de tu código. Exploremos cómo las variables NULL afectan diferentes aspectos de la programación en PowerShell.
Impacto en Cadenas
Si usas $null
en una cadena, esta será una cadena vacía (o un valor en blanco).
$value = $null
Write-Output "The value is $value."
Salida:
The value is .
Para mantener la claridad en tus scripts, es aconsejable encerrar las variables entre corchetes ([]
) cuando las uses en mensajes de registro, especialmente cuando el valor de la variable está al final de la cadena.
$value = $null
Write-Output "The value is [$value]"
Salida:
The value is []
Esta práctica ayuda a distinguir entre cadenas vacías y valores $null
.
Impacto en Ecuaciones Numéricas
Cuando se usa una variable $null
en una ecuación numérica, nuestros resultados serán inválidos si no dan un error. A veces, la variable $null
se evaluará como 0
, o hará que todo el resultado sea $null
.
Considera este ejemplo que involucra la multiplicación, que produce 0
o $null
según el orden de los valores.
$null * 5
$null -eq ( $null * 5 )
Salida:
True
Impacto en 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: "Cannot index into a null array"
.
$value = $null
$value[10]
Salida:
Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Sin embargo, si tienes una colección e intentas recuperar un elemento que no existe en la colección, recibirás un resultado $null
.
$array = @( 'one', 'two', 'three' )
$null -eq $array[100]
Salida:
True
Impactos en Objetos
Si intentamos acceder a una propiedad o subpropiedad de un objeto sin propiedad especificada, podemos obtener una variable $null
como lo harías con una variable indefinida. No importa si el valor es $null
o un objeto real en este caso.
$null -eq $undefined.not.existing
Salida:
True
Impactos en Métodos
Llamar a un método en una variable $null
lanzará una excepción RuntimeException
.
$value = $null
$value.toString()
Salida:
You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Siempre que encuentres la frase "You cannot call a method on a null valued expression"
, es una señal para inspeccionar tu código en busca de lugares donde se está llamando a un método en una variable sin verificar primero los valores $null
.
Comprobar Valores Nulos en PowerShell
Usa Operadores de Comparación -eq
y -ne
para Comprobar Valores Nulos en PowerShell
Al comprobar valores $null
en PowerShell, es una buena práctica colocar la variable $null
en el lado izquierdo de las comparaciones. Este estilo de escritura no solo es intencional, sino que también es aceptado como una buena práctica en PowerShell.
Sin embargo, hay escenarios donde colocar $null
en el lado derecho puede darte resultados inesperados. Veamos el siguiente código y tratemos de predecir 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á como $true
, y nuestro mensaje será The array is $null
. La advertencia aquí es que es posible crear un $value
que permita que ambos resultados sean $false
.
Salida:
The array is $null
En este caso, la variable $value
es un array que contiene un $null
.
El operador -eq
verifica cada valor en el array y devuelve el $null
coincidente, que se evalúa como $false
. De manera similar, el operador -ne
devuelve todo lo que no coincide con el valor $null
, resultando en ningún resultado (también evaluando como $false
).
Por lo tanto, ninguna condición es $true
, aunque una de ellas podría esperarse que lo fuera.
Usa el Operador -not
para Comprobar Valores Nulos en PowerShell
El operador -not
es un operador lógico en PowerShell que niega una condición. Cuando se aplica a una variable, comprueba si la variable no es nula.
$myVariable = $null
if (-not $myVariable) {
Write-Host "The variable is null."
}
En este fragmento de código, tenemos una variable $myVariable
inicializada con un valor nulo. El operador -not
se utiliza en la declaración if
para verificar si $myVariable
no es nula.
Si la condición es verdadera, el script ejecutará el bloque de código dentro de la declaración if
.
Salida:
The variable is null.
Como se demostró en la salida, el script identifica que $myVariable
es nula y muestra el mensaje "The variable is null"
.
Usa el Método IsNullOrEmpty()
para Comprobar Valores Nulos en PowerShell
El método IsNullOrEmpty()
es un método de la clase System.String
, no un método nativo de PowerShell. Diferentes tipos de datos pueden tener diferentes formas de comprobar valores nulos o vacíos.
En este código, creamos una variable llamada $myString
y le asignamos el valor $null
, que representa una cadena nula o vacía.
Usamos el método [string]::IsNullOrEmpty($myString)
para comprobar si $myString
es nula o vacía. Este método es parte de la clase [string]
en el .NET Framework y se utiliza para determinar si una cadena es nula o una cadena vacía.
Si $myString
es de hecho nula o vacía, la condición es verdadera y el script imprime "The string is null or empty."
.
$myString = $null
if ([string]::IsNullOrEmpty($myString)) {
Write-Host 'The string is null or empty.'
}
Salida:
The string is null or empty.
Dado que $myString
se le asigna el valor $null
, la condición es verdadera y el mensaje se muestra en la salida.
Usa el Método IsNullOrWhiteSpace()
para Comprobar Valores Nulos en PowerShell
El método IsNullOrWhiteSpace()
es un método útil disponible en la clase System.String
del .NET Framework, y puedes usarlo en PowerShell llamándolo en una variable de cadena.
Este método comprueba si una cadena es nula, vacía o consiste únicamente en caracteres de espacio en blanco. Es útil cuando deseas verificar si una variable de cadena está efectivamente vacía, incluso si contiene solo espacios o tabulaciones.
En el siguiente código, creamos una variable llamada $myString
y le asignamos una cadena que contiene solo caracteres de espacio en blanco (espacios).
Luego, usamos el método [string]::IsNullOrWhiteSpace($myString)
para comprobar si $myString
es nula o solo contiene espacios en blanco.
$myString = $null
if ([string]::IsNullOrWhiteSpace($myString)) {
Write-Host 'The string is null or contains only whitespace.'
}
Salida:
The string is null or contains only whitespace.
Dado que la condición es verdadera ($myString
es nulo), el script imprime "The string is null or contains only whitespace."
.
Este método es útil cuando deseas asegurarte de que una cadena esté verdaderamente vacía, incluso si parece estar "en blanco"
debido a espacios o tabulaciones.
Conclusión
En la programación en PowerShell, entender cómo funcionan las variables $null
es importante porque pueden afectar cómo se comportan tus scripts en diferentes situaciones. Para escribir scripts confiables, es una buena idea seguir las mejores prácticas, como asegurarte de comprobar los valores nulos correctamente colocando $null
en el lado izquierdo.
Ya seas nuevo en la programación o tengas experiencia, conocer estos detalles te ayudará a mejorar en el uso de PowerShell.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn