Variáveis Nulas no PowerShell
- Introdução à Variável Nula no PowerShell
- Impactos da Variável Nula no PowerShell
- Verificando Valores Nulos no PowerShell
- Conclusão

O PowerShell trata o objeto $Null
com o valor nulo, e alguns comandos requerem alguma saída para gerar. Eles geram o valor nulo se houver qualquer erro e também podem ser úteis na finalidade de resolução de problemas nos scripts para verificar se o comando gera algum valor.
Este artigo fala sobre a variável nula, os impactos de usar a variável nula em diferentes sintaxes no PowerShell e maneiras de verificar os valores nulos.
Introdução à Variável Nula no PowerShell
Podemos pensar em NULL como um valor desconhecido ou vazio. Por exemplo, uma variável é NULL até que você atribua um valor ou objeto.
Essa variável pode ser importante porque alguns comandos requerem um valor e falharão se o valor for NULL.
A variável $null
é uma variável automática no PowerShell usada para representar NULL. Podemos atribuía a variáveis, usá-la em comparações e usá-la como um espaço reservado para NULL em uma coleção.
O PowerShell trata $null
como um objeto com o valor NULL. Portanto, essa variável é diferente do que você pode esperar se você vem de outra linguagem.
Impactos da Variável Nula no PowerShell
O comportamento dos valores $null
pode variar dependendo de onde eles aparecem dentro do seu código. Vamos explorar como as variáveis NULL afetam diferentes aspectos da programação PowerShell.
Impacto em Strings
Se você usar $null
em uma string, será uma string vazia (ou um valor em branco).
$value = $null
Write-Output "The value is $value."
Saída:
The value is .
Para manter a clareza em seus scripts, é aconselhável colocar variáveis entre colchetes ([]
) ao usá-las em mensagens de log, especialmente quando o valor da variável está no final da string.
$value = $null
Write-Output "The value is [$value]"
Saída:
The value is []
Essa prática ajuda a distinguir entre strings vazias e valores $null
.
Impacto em Equações Numéricas
Quando uma variável $null
é usada em uma equação numérica, nossos resultados serão inválidos se não gerarem um erro. Às vezes, a variável $null
será avaliada como 0
, ou fará com que todo o resultado seja $null
.
Considere este exemplo envolvendo multiplicação, que gera 0
ou $null
com base na ordem dos valores.
$null * 5
$null -eq ( $null * 5 )
Saída:
True
Impacto em Coleções
Uma coleção permite que usemos um índice para acessar valores. Se tentarmos indexar em uma coleção nula, receberemos este erro "Cannot index into a null array"
.
$value = $null
$value[10]
Saída:
Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
No entanto, se você tiver uma coleção e tentar recuperar um elemento que não existe na coleção, receberá um resultado $null
.
$array = @( 'one', 'two', 'three' )
$null -eq $array[100]
Saída:
True
Impactos em Objetos
Se tentarmos acessar uma propriedade ou subpropriedade de um objeto sem propriedade especificada, podemos obter uma variável $null
como você faria para uma variável indefinida. Não importa se o valor é $null
ou um objeto real neste caso.
$null -eq $undefined.not.existing
Saída:
True
Impacts on Methods
Chamar um método em uma variável $null
lançará uma exceção RuntimeException
.
$value = $null
$value.toString()
Saída:
You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Sempre que você encontrar a frase "You cannot call a method on a null valued expression"
, é um sinal para inspecionar seu código em busca de lugares onde um método esteja sendo chamado em uma variável sem antes verificar os valores $null
.
Verificando Valores Nulos no PowerShell
Use Operadores de Comparação -eq
e -ne
para Verificar Valores Nulos no PowerShell
Ao verificar valores $null
no PowerShell, é uma prática recomendada colocar a variável $null
no lado esquerdo das comparações. Esse estilo de escrita não é apenas intencional, mas também aceito como uma boa prática no PowerShell.
No entanto, há cenários em que colocar $null
no lado direito pode lhe dar resultados inesperados. Vamos olhar o seguinte código e tentar prever os resultados:
if ( $value -eq $null ) {
'The array is $null'
}
if ( $value -ne $null ) {
'The array is not $null'
}
Se não definirmos $value
, o primeiro avaliará como $true
, e nossa mensagem será The array is $null
. O detalhe aqui é que criar um $value
que permita que ambos os resultados sejam $false
é possível.
Saída:
The array is $null
Neste caso, a variável $value
é um array que contém um $null
.
O operador -eq
verifica cada valor no array e retorna o $null
correspondente, que avalia como $false
. Da mesma forma, o operador -ne
retorna tudo que não combina com o valor $null
, resultando em nenhum resultado (também avaliando como $false
).
Portanto, nenhuma das condições é $true
, mesmo que uma delas possa ser esperada.
Use o Operador -not
para Verificar Valores Nulos no PowerShell
O operador -not
é um operador lógico no PowerShell que nega uma condição. Quando aplicado a uma variável, verifica se a variável não é nula.
$myVariable = $null
if (-not $myVariable) {
Write-Host "The variable is null."
}
Neste trecho de código, temos uma variável $myVariable
inicializada com um valor nulo. O operador -not
é usado na declaração if
para verificar se $myVariable
não é nula.
Se a condição for verdadeira, o script executará o bloco de código dentro da declaração if
.
Saída:
The variable is null.
Como demonstrado na saída, o script identifica que $myVariable
é nula e imprime a mensagem "The variable is null"
.
Use o Método IsNullOrEmpty()
para Verificar Valores Nulos no PowerShell
O IsNullOrEmpty()
é um método da classe System.String
, não um método nativo do PowerShell. Diferentes tipos de dados podem ter diferentes maneiras de verificar valores nulos ou vazios.
Neste código, criamos uma variável chamada $myString
e atribuímos a ela o valor $null
, que representa uma string nula ou vazia.
Usamos o método [string]::IsNullOrEmpty($myString)
para verificar se $myString
é nula ou vazia. Este método é parte da classe [string]
no .NET Framework e é usado para determinar se uma string é nula ou uma string vazia.
Se $myString
for de fato nula ou vazia, a condição é verdadeira, e o script imprime "The string is null or empty."
.
$myString = $null
if ([string]::IsNullOrEmpty($myString)) {
Write-Host 'The string is null or empty.'
}
Saída:
The string is null or empty.
Como $myString
recebe o valor $null
, a condição é verdadeira, e a mensagem é exibida na saída.
Use o Método IsNullOrWhiteSpace()
para Verificar Valores Nulos no PowerShell
O IsNullOrWhiteSpace()
é um método útil disponível na classe System.String
do .NET Framework, e você pode usá-lo no PowerShell chamando-o em uma variável de string.
Esse método verifica se uma string é nula, vazia ou consiste apenas em caracteres de espaço em branco. É útil quando você quer verificar se uma variável de string está efetivamente vazia, mesmo que contenha apenas espaços ou abas.
No código abaixo, criamos uma variável chamada $myString
e atribuímos a ela uma string que contém apenas caracteres de espaço em branco (espaços).
Em seguida, usamos o método [string]::IsNullOrWhiteSpace($myString)
para verificar se $myString
é nula ou contém apenas espaço em branco.
$myString = $null
if ([string]::IsNullOrWhiteSpace($myString)) {
Write-Host 'The string is null or contains only whitespace.'
}
Saída:
The string is null or contains only whitespace.
Como a condição é verdadeira ($myString
é nula), o script imprime "The string is null or contains only whitespace."
.
Esse método é útil quando você quer garantir que uma string esteja realmente vazia, mesmo que pareça estar "em branco"
devido a espaços ou abas.
Conclusão
Na programação PowerShell, entender como as variáveis $null
funcionam é importante porque elas podem afetar como seus scripts se comportam em diferentes situações. Para escrever scripts confiáveis, é uma boa ideia seguir as melhores práticas, como garantir que você verifique valores nulos corretamente colocando $null
no lado esquerdo.
Quer você seja novo na programação ou tenha experiência, conhecer esses detalhes o ajudará a se tornar melhor no uso do PowerShell.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn