Variáveis Nulas no PowerShell

  1. Introdução à Variável Nula no PowerShell
  2. Impactos da Variável Nula no PowerShell
  3. Verificando Valores Nulos no PowerShell
  4. Conclusão
Variáveis Nulas no PowerShell

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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

Artigo relacionado - PowerShell Variable