Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Breve descrizione
Descrive un comando di linguaggio che è possibile usare per eseguire elenchi di istruzioni in base ai risultati di uno o più test condizionali.
Descrizione lunga
È possibile usare l'istruzione If per eseguire blocchi di codice se un test condizionale specificato restituisce true. È anche possibile specificare uno o più test condizionali aggiuntivi da eseguire se tutti i test precedenti restituiscono false. Infine, è possibile specificare un blocco di codice aggiuntivo che viene eseguito se nessun altro test condizionale precedente restituisce true.
Sintassi
L'esempio seguente illustra la sintassi dell'istruzione If:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Quando si esegue un'istruzione If, PowerShell valuta l'espressione condizionale <test1> come true o false. Se <test1> è true, <statement list 1> viene eseguita e PowerShell esce dall'istruzione If. Se <test1> è false, PowerShell valuta la condizione specificata dall'istruzione condizionale <test2>.
Per ulteriori informazioni sulla valutazione booleana, vedere about_Booleans.
Se <test2> è true, <statement list 2> viene eseguita e PowerShell esce dall'istruzione If. Se both <test1> e <test2> restituisce false, il blocco di <statement list 3> codice viene eseguito e PowerShell chiude l'istruzione If.
È possibile usare più istruzioni Elseif per concatenare una serie di test condizionali. Quindi, che ogni test venga eseguito solo se tutti i test precedenti sono falsi. Se è necessario creare un'istruzione If che contiene molte istruzioni Elseif, è consigliabile usare invece un'istruzione Switch.
Esempi:
L'istruzione più semplice If contiene un singolo comando e non contiene istruzioni Elseif o Else. L'esempio seguente illustra la forma più semplice dell'istruzione If:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
In questo esempio, se la variabile $a è maggiore di 2, la condizione restituisce true e viene eseguito l'elenco di istruzioni. Tuttavia, se $a è minore o uguale a 2 o non è una variabile esistente, l'istruzione If non visualizza alcun messaggio.
Aggiungendo un'istruzione Else, viene visualizzato un messaggio quando $a è minore o uguale a 2. Come illustrato nell'esempio seguente:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
else {
Write-Host ("The value $a is less than or equal to 2," +
" is not created or is not initialized.")
}
Per perfezionare ulteriormente questo esempio, è possibile utilizzare l'istruzione Elseif per visualizzare un messaggio quando il valore di $a è uguale a 2. Come illustrato nell'esempio seguente:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
Write-Host "The value $a is equal to 2."
}
else {
Write-Host ("The value $a is less than 2 or" +
" was not created or initialized.")
}
Uso della sintassi dell'operatore ternario
PowerShell 7.0 ha introdotto una nuova sintassi usando l'operatore ternario. Segue la sintassi dell'operatore ternario C#:
<condition> ? <if-true> : <if-false>
L'operatore ternario si comporta come l'istruzione if-else semplificata. L'espressione <condition> viene valutata e il risultato viene convertito in un valore booleano per determinare quale ramo deve essere valutato successivamente:
- L'espressione
<if-true>viene eseguita se l'espressione<condition>è true - L'espressione
<if-false>viene eseguita se l'espressione<condition>è false
Per esempio:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
In questo esempio, il valore di $message è "Path exists" quando Test-Path restituisce $true. Quando Test-Path restituisce $false, il valore di $message è "Percorso non trovato".
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
In questo esempio, se il servizio è in esecuzione, viene arrestato e se lo stato non è In esecuzione, viene avviato.