Variabili Null in PowerShell

  1. Introduzione alla Variabile Null in PowerShell
  2. Impatti della Variabile Null in PowerShell
  3. Controllare i Valori Null in PowerShell
  4. Conclusione
Variabili Null in PowerShell

PowerShell tratta l’oggetto $Null con il valore null, e alcuni comandi richiedono un output per generare. Generano il valore null se c’è qualche errore e possono essere utili anche per la risoluzione dei problemi negli script per controllare se il comando genera qualche valore.

Questo articolo parla della variabile null, degli impatti dell’uso della variabile null in diverse sintassi in PowerShell e dei modi per controllare i valori null.

Introduzione alla Variabile Null in PowerShell

Possiamo pensare a NULL come a un valore sconosciuto o vuoto. Ad esempio, una variabile è NULL fino a quando non le viene assegnato un valore o un oggetto.

Questa variabile può essere importante perché alcuni comandi richiedono un valore e falliranno se il valore è NULL.

La variabile $null è una variabile automatica in PowerShell utilizzata per rappresentare NULL. Possiamo assegnarla a variabili, usarla nelle comparazioni e usarla come segnaposto per NULL in una collezione.

PowerShell tratta $null come un oggetto con il valore NULL. Pertanto, questa variabile è diversa da ciò che potresti aspettarti se provieni da un’altra lingua.

Impatti della Variabile Null in PowerShell

Il comportamento dei valori $null può variare a seconda di dove appaiono nel tuo codice. Esploriamo come le variabili NULL influenzano diversi aspetti della scripting in PowerShell.

Impatto sulle Stringhe

Se utilizzi $null in una stringa, sarà una stringa vuota (o un valore vuoto).

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

Output:

The value is .

Per mantenere chiarezza nei tuoi script, è consigliabile racchiudere le variabili tra parentesi quadre ([]) quando le utilizzi nei messaggi di log, specialmente quando il valore della variabile è alla fine della stringa.

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

Output:

The value is []

Questa pratica aiuta a distinguere tra stringhe vuote e valori $null.

Impatto sulle Equazioni Numeriche

Quando una variabile $null viene utilizzata in un’equazione numerica, i nostri risultati saranno non validi se non generano un errore. A volte, la variabile $null verrà valutata come 0, oppure renderà l’intero risultato $null.

Considera questo esempio che coinvolge la moltiplicazione, che produce 0 o $null in base all’ordine dei valori.

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

Output:

True

Impatto sulle Collezioni

Una collezione ci consente di utilizzare un indice per accedere ai valori. Se proviamo a indicizzare una collezione null, riceveremo questo errore "Cannot index into a null array".

$value = $null
$value[10]

Output:

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

Tuttavia, se hai una collezione e tenti di recuperare un elemento che non esiste nella collezione, riceverai un risultato $null.

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

Output:

True

Impatti sugli Oggetti

Se proviamo ad accedere a una proprietà o sotto-proprietà di un oggetto senza una proprietà specificata, possiamo ottenere una variabile $null come faresti per una variabile non definita. Non importa se il valore è $null o un oggetto reale in questo caso.

$null -eq $undefined.not.existing

Output:

True

Impatti sui Metodi

Chiamare un metodo su una variabile $null genererà un’eccezione RuntimeException.

$value = $null
$value.toString()

Output:

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

Ogni volta che incontri la frase "You cannot call a method on a null valued expression", è un segnale per esaminare il tuo codice per verificare i punti in cui un metodo viene chiamato su una variabile senza prima controllare i valori $null.

Controllare i Valori Null in PowerShell

Usa gli Operatori di Comparazione -eq e -ne per Controllare i Valori Null in PowerShell

Quando controlli i valori $null in PowerShell, è una prassi migliore posizionare la variabile $null sul lato sinistro delle comparazioni. Questo stile di scrittura non è solo intenzionale, ma è anche accettato come una buona pratica di PowerShell.

Tuttavia, ci sono scenari in cui posizionare $null sul lato destro può darti risultati inaspettati. Esaminiamo il seguente codice e proviamo a prevedere i risultati:

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

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

Se non definiamo $value, il primo valuterà $true, e il nostro messaggio sarà The array is $null. Il caveat qui è che è possibile creare un $value che consentirà a entrambi i risultati di essere $false.

Output:

The array is $null

In questo caso, la variabile $value è un array che contiene un $null.

L’operatore -eq controlla ogni valore nell’array e restituisce il $null corrispondente, che viene valutato come $false. Allo stesso modo, l’operatore -ne restituisce tutto ciò che non corrisponde al valore $null, risultando in nessun risultato (valutato anch’esso come $false).

Pertanto, nessuna delle condizioni è $true, anche se una di esse potrebbe essere attesa come tale.

Usa l’Operatore -not per Controllare i Valori Null in PowerShell

L’operatore -not è un operatore logico in PowerShell che nega una condizione. Quando applicato a una variabile, controlla se la variabile non è null.

$myVariable = $null

if (-not $myVariable) {
    Write-Host "The variable is null."
}

In questo frammento di codice, abbiamo una variabile $myVariable inizializzata con un valore null. L’operatore -not viene utilizzato nell’istruzione if per controllare se $myVariable non è null.

Se la condizione è vera, lo script eseguirà il blocco di codice all’interno dell’istruzione if.

Output:

The variable is null.

Come dimostrato nell’output, lo script identifica che $myVariable è null e stampa il messaggio "The variable is null".

Usa il Metodo IsNullOrEmpty() per Controllare i Valori Null in PowerShell

Il IsNullOrEmpty() è un metodo della classe System.String, non un metodo nativo di PowerShell. Diversi tipi di dati possono avere modi diversi per controllare valori null o vuoti.

In questo codice, creiamo una variabile chiamata $myString e le assegniamo il valore $null, che rappresenta una stringa null o vuota.

Usiamo il metodo [string]::IsNullOrEmpty($myString) per controllare se $myString è null o vuota. Questo metodo fa parte della classe [string] nel .NET Framework ed è utilizzato per determinare se una stringa è null o una stringa vuota.

Se $myString è effettivamente null o vuota, la condizione è vera e lo script stampa "The string is null or empty.".

$myString = $null

if ([string]::IsNullOrEmpty($myString)) {
    Write-Host 'The string is null or empty.'
}

Output:

The string is null or empty.

Poiché a $myString è assegnato il valore $null, la condizione è vera e il messaggio viene visualizzato nell’output.

Usa il Metodo IsNullOrWhiteSpace() per Controllare i Valori Null in PowerShell

Il IsNullOrWhiteSpace() è un metodo utile disponibile nella classe System.String del .NET Framework, e puoi usarlo in PowerShell chiamandolo su una variabile stringa.

Questo metodo controlla se una stringa è null, vuota o consiste solo in caratteri di spazio bianco. È utile quando desideri controllare se una variabile stringa è effettivamente vuota, anche se contiene solo spazi o tabulazioni.

Nel codice qui sotto, creiamo una variabile chiamata $myString e le assegniamo una stringa che contiene solo caratteri di spazio bianco (spazi).

Poi, usiamo il metodo [string]::IsNullOrWhiteSpace($myString) per controllare se $myString è null o contiene solo spazi bianchi.

$myString = $null

if ([string]::IsNullOrWhiteSpace($myString)) {
    Write-Host 'The string is null or contains only whitespace.'
}

Output:

The string is null or contains only whitespace.

Poiché la condizione è vera ($myString è null), lo script stampa "The string is null or contains only whitespace.".

Questo metodo è utile quando vuoi assicurarti che una stringa sia veramente vuota, anche se appare "blanca" a causa di spazi o tabulazioni.

Conclusione

Nella scripting di PowerShell, comprendere come funzionano le variabili $null è importante perché possono influenzare il comportamento dei tuoi script in diverse situazioni. Per scrivere script affidabili, è una buona idea seguire le migliori pratiche, come assicurarsi di controllare correttamente i valori null posizionando $null sul lato sinistro.

Che tu sia nuovo nella scripting o abbia esperienza, conoscere questi dettagli ti aiuterà a diventare migliore nell’utilizzo di PowerShell.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
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

Articolo correlato - PowerShell Variable