PowerShell è un potente linguaggio di scripting che offre molte funzionalità per l’automazione e la gestione dei sistemi basati su Windows. Uno dei costrutti più comunemente utilizzati è il ciclo `while` di PowerShell.
Non preoccuparti se sei rimasto bloccato in un ciclo infinito mentre cercavi di imparare lo scripting di PowerShell. Lascia che il ciclo `while` di PowerShell ti guidi verso la tua grande fuga. E in questo tutorial, tornerai alle basi del lavoro con i cicli `while` in PowerShell mentre scrivi i tuoi script.
Continua a leggere per portare le tue competenze nello scripting di PowerShell al livello successivo!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Per seguire, assicurati di avere quanto segue:
- A Windows machine – This tutorial uses Windows 10.
- Windows PowerShell 5.0 o versione successiva installato – Questo tutorial utilizza PowerShell 7.
- A user account with administrator privileges.
Esecuzione di cicli `while` con singola condizione
Uno dei tipi più semplici di ciclo `while` è il tipo a singola condizione. A differenza dell’istruzione `If`, questo tipo di ciclo esegue un insieme di comandi specificati finché una condizione specificata viene valutata come vera. Quando viene restituito un valore ‘Falso’, il ciclo si interrompe e l’esecuzione continua con il resto dello script.
Di seguito è riportata la sintassi per un ciclo while
con una singola condizione:
- La prima cosa che si nota è l’uso delle parentesi. La condizione deve essere racchiusa tra parentesi, mentre il blocco di codice è un insieme di comandi PowerShell che viene eseguito mentre la condizione è vera.
- La seconda cosa da notare è che la condizione deve restituire un valore Booleano, che si valuta in Vero o Falso.
Esegui il codice sottostante, dove il valore di $val
inizia da 0
e viene incrementato di 1
ogni volta che il blocco di codice viene eseguito fino a quando il valore della variabile $val
equivale a 3
.
Quando $val
raggiunge un valore di 3
, il che rende la condizione Falsa, il ciclo si interrompe e l’esecuzione continua con il resto dello script.

Esecuzione del ciclo While di PowerShell con variabili incorporate ($true
/$false
)
L’esempio precedente, utilizzando condizioni nel ciclo while
, funziona bene. Ma è anche possibile utilizzare le variabili incorporate di PowerShell, come $true
e $false
, per creare un ciclo While
.
La sintassi seguente si esegue fino a quando $true
non è più $true
. In altre parole, il ciclo si esegue all’infinito. Ma è necessario includere sempre un modo per uscire da un ciclo infinito. Altrimenti, si rimane bloccati per sempre. Apprenderai di più su come uscire da un ciclo utilizzando break
e continue
più avanti in questo tutorial.
Esegui il blocco di codice qui sotto, che si esegue all’infinito, stampando il valore di $i
sulla console.
Ora, premi Ctrl+C per uscire dal ciclo. Questo ciclo consuma molte risorse di sistema, quindi fai attenzione quando li usi.

while
loop with PowerShell’s built-in ($true
) variableEsecuzione di cicli While
multi-condizione
Oltre ai cicli while
a singola condizione, è possibile creare anche cicli while
a condizioni multiple. Come nel caso del ciclo while
a singola condizione, le condizioni devono restituire un valore booleano, True o False.
Di seguito è riportata la sintassi per un ciclo while
a condizioni multiple, simile alla sintassi per un ciclo while
a singola condizione. La differenza principale è che è possibile includere più condizioni separate dagli operatori seguenti:
- AND (
-and
) – Entrambe le condizioni devono essere vere. - OR (
-or
) (Una delle due condizioni può essere vera).
Esegui il codice seguente, che cicla finché $val
non è uguale (-ne
) a 3
-and
$i
non è uguale (-ne
) a 5
.
Quando entrambi i valori delle variabili raggiungono le rispettive condizioni, il ciclo si interrompe e l’esecuzione continua con il resto dello script.

Esecuzione di un ciclo while
con operatore AND

while
loop with AND operatorOra, esegui il codice sottostante, che chiede all’utente la propria età, memorizzata nella variabile $age
.
Se l’utente inserisce un numero inferiore a (-lt
) 1
o non è un numero (-nomatch
), allora all’utente viene chiesto di inserire nuovamente un numero valido. Questo comportamento è utile per dare agli utenti più possibilità di inserire un input valido.
Nel risultato qui sotto, puoi vedere che all’utente è stato chiesto di inserire la propria età tre volte, come segue:
- La prima volta, l’utente ha inserito dieci, che non è un numero.
- La seconda volta, l’utente ha inserito 0, che è inferiore a 1.
- La terza volta, l’utente ha inserito 10, che è un’età valida.

while
loop with the OR operatorUtilizzo delle parole chiave BREAK e CONTINUE nei cicli While
Hai visto come i cicli while
aggiungono flessibilità allo script PowerShell. Ma per controllare meglio l’esecuzione dei tuoi cicli While, aggiungi le parole chiave break
e continue
.
Per esempio, se desideri elaborare solo un certo numero di elementi in un array, puoi utilizzare la parola chiave BREAK per uscire dal ciclo quando il numero desiderato di elementi è stato elaborato.
Queste parole chiave funzionano nel seguente modo:
Keyword | Function |
---|---|
break | Immediately exits the loop and continues execution with the rest of the script. |
continue | Skips over the remaining code block in the current iteration of the loop and continues with the next iteration. |
Esegui il codice sottostante, che cicla attraverso un array di 10 elementi.
Nel codice sottostante, l’istruzione if
controlla il valore di $i
. Se il valore di $i
è 5
, la parola chiave continue
salta il resto del codice nel ciclo e continua con l’iterazione successiva. Se il valore di $i
è 8
, la parola chiave break
esce dal ciclo e continua con il resto dello script.
Altrimenti, il ciclo while
stampa (Write-Host
) e incrementa il valore della variabile $i
di 1
.
Come puoi vedere nell’output sottostante, il ciclo ha saltato il quinto e l’ottavo elemento nell’array. Il while
loop ha elaborato tutti gli altri elementi nell’array ed è uscito dopo aver raggiunto l’ottavo elemento.

while
loop with break
and continue
keywordsLimitare il Tempo di Esecuzione di un Ciclo While
In genere, potresti voler limitare il tempo di esecuzione di un ciclo. Forse stai cercando di connetterti a un server remoto. In tal caso, puoi dare al server il tempo di rispondere prima di terminare il ciclo utilizzando il cmdlet Start-Sleep
all’interno del tuo ciclo while
.
Il cmdlet Start-Sleep
mette in pausa l’esecuzione dello script per un periodo di tempo specificato.
Esegui il codice qui sotto per ottenere e memorizzare la data e l’ora correnti con il comando Get-Date
nella variabile $startTime
. Il ciclo while
continua finché la data/ora corrente è di meno di 10
secondi dal valore memorizzato in $startTime
.
Mentre il ciclo while
viene eseguito, viene stampato un messaggio mentre il cmdlet Start-Sleep
mette in pausa l’esecuzione dello script per 1
secondo.
Il blocco di codice qui sotto è solo uno scheletro per ciò che useresti effettivamente in pratica. Puoi inserire altro nel codice all’interno del ciclo secondo necessità.
Sotto, puoi vedere che il loop è continuato ad eseguirsi per 10 secondi prima di uscire dal loop.

while
loop runsConclusione
I loop while
di PowerShell sono utili quando si affrontano concetti complessi per evitare di rimanere bloccati in un loop o mentre si scrivono gli script. E in questo tutorial, hai imparato molti modi per lavorare con i loop while
per script più flessibili e potenti.
Con questa nuova conoscenza, il cielo è il limite. Quindi perché non massimizzare l’uso di operatori logici e parole chiave per automatizzare compiti con i tuoi script?