HOWTO · PowerShell

Valori Booleani in PowerShell

Questo articolo spiegherà cosa sono i valori booleani e come possiamo usarli all'interno dell'ambiente Windows PowerShell.

In questa pagina

In PowerShell i valori booleani sono $true e $false. Confronti e comandi possono produrli; puoi combinarli con operatori logici oppure usarli per controllare un’istruzione if.

Valori booleani in PowerShell

Un valore booleano rappresenta uno di due stati logici: vero o falso. In PowerShell, i valori booleani nativi sono $true e $false. PowerShell li visualizza come True e False, ma le parole mostrate non sono stringhe tra virgolette. Per esempio, $true è un valore booleano, mentre "True" è una stringa. Allo stesso modo, 1 e 0 sono numeri, non valori booleani nativi. Se necessario, uno script può convertire i valori in modo esplicito, ma nelle condizioni è più chiaro usare i valori booleani.

I valori booleani sono utili perché possono essere prodotti da confronti e comandi, e gli script possono usare il risultato per decidere cosa fare. I confronti usano operatori come -eq (uguale) e -ne (diverso). Gli operatori logici combinano o negano espressioni booleane. Gli esempi seguenti mostrano i valori così come li visualizza PowerShell.

Confrontare valori e combinare condizioni

Gli operatori di confronto producono un risultato booleano. Questi operatori confrontano i valori: -eq verifica l’uguaglianza, -ne verifica la disuguaglianza, -gt significa maggiore di, -lt minore di, -ge maggiore o uguale a e -le minore o uguale a. Gli operatori di confronto di PowerShell possono confrontare anche le stringhe; per impostazione predefinita, il confronto tra stringhe non distingue maiuscole e minuscole. Usa -ceq quando serve un confronto di uguaglianza che distingua maiuscole e minuscole.

Esegui questo esempio:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

$score = 84
$name = "Ava"
$hasName = $name -ne ""
$passed = ($score -ge 70) -and $hasName
$needsReview = -not $passed

Write-Output (10 -eq 10)
Write-Output (10 -ne 8)
Write-Output (10 -gt 8)
Write-Output (10 -lt 8)
Write-Output (10 -le 10)
Write-Output (10 -ge 10)
Write-Output ($true -and $false)
Write-Output ($true -or $false)
Write-Output $needsReview
if ($passed) {
    Write-Output "Ava passed."
} else {
    Write-Output "Ava did not pass."
}
True
True
True
False
True
True
False
True
False
Ava passed.

Le prime sei righe mostrano gli operatori di confronto e i rispettivi risultati booleani. L’operatore logico -and restituisce vero solo quando entrambi gli operandi sono veri; -or restituisce vero quando almeno uno degli operandi è vero. -not inverte un valore booleano, quindi $needsReview è falso quando $passed è vero. Le parentesi chiariscono quali confronti compongono la condizione combinata. In questo esempio, $passed memorizza un’espressione booleana e l’istruzione if usa quel valore per scegliere un ramo.

Ottenere risultati booleani dai comandi di PowerShell

Alcuni comandi restituiscono direttamente valori booleani. Test-Path restituisce $true se il percorso specificato esiste e $false in caso contrario. Il risultato dipende dal computer in uso e dal percorso verificato: non dare per scontato che una determinata directory di Windows esista su ogni sistema. Per esempio, assegna Test-Path -Path $env:TEMP a una variabile per controllare la directory temporanea definita nell’ambiente corrente.

Test-Connection può restituire un risultato booleano se usato con -Quiet. Per esempio, $reachable = Test-Connection -ComputerName "example.com" -Count 2 -Quiet memorizza se la destinazione ha risposto ai tentativi di connessione. L’accesso alla rete, il DNS, le regole del firewall, la configurazione remota e la versione di PowerShell possono influire sul risultato o sul comportamento del comando; il risultato ottenuto su un computer, quindi, non è una garanzia universale. Se il comportamento dipende dalla versione, consulta la guida del comando sul sistema in cui verrà eseguito lo script.

Un comando può produrre anche testo o oggetti anziché un singolo valore booleano. Quando usi l’output di un comando in una condizione, considera se il comando produce uno o più risultati: la valutazione della veridicità di una raccolta e il comportamento della pipeline possono influire sulla condizione. Se ti serve specificamente una risposta booleana, preferisci un’opzione del comando come -Quiet.

Usare i valori booleani negli script

Quando prevedi di riutilizzare una condizione, memorizza il risultato di un confronto o di un comando in una variabile con un nome descrittivo. Per esempio, $isAvailable = Test-Path -Path $env:TEMP registra il risultato di un controllo, che if ($isAvailable) { ... } può usare per scegliere una risposta. Combinare controlli è utile quando un’azione richiede che siano soddisfatti tutti i prerequisiti: $isReady -and $hasPermission. Usa -or quando basta che sia vera una delle condizioni e -not quando lo script deve agire se una condizione è falsa.

PowerShell considera i valori booleani distinti da quelli numerici. Non descrivere 1 come $true né 0 come $false: una determinata API, un formato di file o un sistema esterno può codificare un campo vero/falso come numero o testo, ma tale rappresentazione appartiene a quell’interfaccia. Converti o convalida i dati al confine, invece di affidarti a un’ipotesi implicita. Questa distinzione aiuta a evitare confronti inattesi e rende più chiaro lo scopo dello script.

Conclusione

I valori $true e $false di PowerShell rappresentano stati booleani. Gli operatori di confronto come -eq, -ne, -gt, -lt, -le e -ge producono risultati booleani, mentre -and, -or e -not li combinano o li invertono. Comandi come Test-Path e Test-Connection -Quiet possono fornire risultati booleani il cui significato dipende dal percorso o dall’ambiente verificato. Assegna questi risultati a variabili dal nome chiaro e usali nelle condizioni per controllare il flusso dello script. Mantieni distinti i valori booleani da stringhe e numeri, soprattutto quando scambi dati con sistemi esterni.