Variabili Null in PowerShell
- Introduzione alla Variabile Null in PowerShell
- Impatti della Variabile Null in PowerShell
- Controllare i Valori Null in PowerShell
- Conclusione

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.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn