Quando si utilizzano script PowerShell per gestire sistemi o processare attività di massa, è inevitabile incontrare la necessità di utilizzare una struttura di loop come parte degli script. Ci sono molti tipi di loop disponibili in PowerShell, e uno di essi è il ciclo for. Il ciclo for di PowerShell può eseguire rapidamente lo stesso set di comandi su più elementi e produrre risultati coerenti.
In questo articolo, imparerai cosa è il ciclo for in PowerShell, comprenderai la sua sintassi e cosa compone un’istruzione di ciclo for. Imparerai anche dagli esempi alcuni dei diversi modi in cui è possibile utilizzare il ciclo for.
Comprensione dell’istruzione di ciclo for di PowerShell e dei segnaposto
Il ciclo for di PowerShell viene comunemente utilizzato quando il numero di volte (contatore delle iterazioni) in cui un comando o un processo deve essere eseguito è già noto. Un esempio potrebbe essere quando si desidera elaborare solo un sottoinsieme di valori in un array (ad esempio, elaborare solo 10 elementi su X elementi totali).
L’utilizzo di un ciclo for offre un maggiore controllo sui limiti e sulle condizioni di uscita del codice. Ciò è in contrasto con il ciclo foreach o il cmdlet ForEach-Object
, dove l’iterazione si interrompe dopo l’elaborazione dell’ultimo elemento nella raccolta.
Di seguito è riportata la sintassi dell’istruzione di ciclo for per il tuo riferimento.
Come puoi vedere nella sintassi sopra, l’istruzione di ciclo for di PowerShell può essere suddivisa in quattro segnaposto che devi conoscere. Questi sono i segnaposto Iniziale, Condizione, Ripeti, e Elenco delle istruzioni.
- Il segnaposto Iniziale è dove si specifica un valore iniziale. Questo valore viene letto solo una volta dallo statement. Tipicamente, gli scripter assegnano a questa variabile il valore zero.
- Il segnaposto Condizione specifica il limite o la condizione per determinare se il ciclo dovrebbe continuare o terminare. L’espressione utilizzata in questo segnaposto si valuta come vera.
- Il segnaposto Ripeti accetta comandi multipli. I comandi forniti in questo segnaposto vengono eseguiti dopo ogni ripetizione del ciclo e prima che il Condizione sia rivalutato. Gli scripter di solito lo usano per fornire un’espressione per incrementare o decrementare il valore nel segnaposto Iniziale.
- Infine, il segnaposto Elenco delle istruzioni è dove verrà inserito il codice principale che si intende eseguire. Il codice all’interno di questo segnaposto viene ripetuto in un ciclo fino a quando il Condizione restituisce un valore di
$False
.
Comprensione del flusso di esecuzione del ciclo For di PowerShell
Per comprendere meglio come funziona il ciclo for di PowerShell, è necessario familiarizzare con il suo flusso di esecuzione. Un ciclo for è inizialmente un processo a quattro passaggi, poi diventa un processo a tre passaggi dopo la prima esecuzione. Per ulteriori dettagli, continua a leggere l’algoritmo qui sotto.
PASSO 1
All’inizio dello statement del ciclo for, il valore Iniziale viene letto e memorizzato nella memoria.
Esempio: $num = 0
PASSO 2
Lo statement for loop valuta il risultato booleano dell’espressione all’interno del segnaposto Condizione. Se il risultato è $false
, il for loop viene terminato. Se il risultato è $true
, allora il for loop continua al passaggio successivo.
Esempio: $num -lt 10
STEP 3
PowerShell esegue il codice all’interno del segnaposto Elenco delle istruzioni. Potrebbero esserci uno o più comandi, blocchi di script o funzioni.
Esempio: "Conto $num"
STEP 4
In questo passaggio, viene eseguita l’espressione nel segnaposto Ripeti, che aggiornerà il valore attuale del segnaposto Iniziale. Quindi, il flusso tornerà al Passaggio 2.
Esempio: $num++
Utilizzo del ciclo For di PowerShell (Esempi)
Le sezioni successive saranno alcuni esempi su come utilizzare il ciclo for in vari modi. Questi esempi possono avere o meno un utilizzo pratico o reale così com’è. Ma le tecniche che imparerai possono guidarti nell’uso del ciclo for nel caso tu incontri un reale bisogno di farlo.
Ora che hai un’idea di come funziona il ciclo for, è il momento di vedere come tutto si unisce utilizzando del codice di base.
Ottenere una sequenza di numeri
Il codice sottostante visualizza la stringa "Conto $num"
ripetutamente sulla console a partire da 1 fino a quando il valore di $num
raggiunge 10.
Quando copi il codice sopra e lo incolli nella tua sessione PowerShell per eseguirlo, questa schermata qui sotto ti mostra il risultato.

Concatenare Stringhe
Lo statement del ciclo for non è limitato solo a espressioni matematiche come l’addizione, la sottrazione o la moltiplicazione. Può anche essere utilizzato per concatenare valori di stringhe.
Nell’esempio seguente, la lettera “x” verrà ripetuta con ogni riga contenente un carattere in più rispetto alla precedente fino a quando il numero di caratteri nella riga raggiunge 30.
Come si può vedere, il valore di $x
è stato inizializzato con ''
, che contiene zero caratteri. Il limite basato sulla condizione è raggiunto quando il numero di caratteri contenuti nel valore di $x
raggiunge 30. Dopo ogni iterazione, viene aggiunta al valore di $x
un’altra lettera “x”.
Il risultato atteso quando il codice sopra viene eseguito in PowerShell è mostrato di seguito.

Concatenazione di Stringhe con Espressioni Iniziali e Ripetute Multiple
I segnaposti Iniziale e Ripeti nello statement del ciclo for possono accettare molteplici espressioni.
Utilizzando il codice nell’esempio precedente, il codice può essere modificato per aggiungere una nuova espressione nel segnaposto Ripeti per scegliere un colore casuale. Il colore casuale verrà quindi utilizzato come colore del primo piano della stringa da visualizzare nella console.
Come si può vedere nella prima riga, viene definito un array contenente nomi di colori. L’operazione del ciclo for sceglierà casualmente un nome di colore da questo array.
Si noti che i segnaposti Iniziale e Ripeti hanno ora due espressioni. Ciascuna espressione è racchiusa tra parentesi e separata da una virgola.
Una volta eseguito il codice modificato in PowerShell, il risultato atteso è mostrato di seguito.

Visualizzazione del Progresso
Probabilmente l’uso più comune del ciclo for è per mostrare gli indicatori di progresso. Questo viene principalmente impiegato quando si eseguono attività per elementi in blocco che potrebbero richiedere tempo per essere completati. Ad esempio, la creazione di un rapporto per tutte le dimensioni delle caselle di posta nella tua organizzazione Exchange, o l’aggiornamento degli attributi di più utenti in Active Directory.
Il codice di esempio qui sotto mostra il modo di base per mostrare il progresso dal 1 al 100%. Come vedrai, il valore iniziale di $counter
è 1, e la condizione indica che questo ciclo verrà eseguito finché il valore di $counter
non raggiunge 100.
Quando esegui il codice sopra in PowerShell, dovresti vedere un output simile, come mostrato di seguito.

Visualizzazione di un Timer del Conto alla Rovescia
Il codice successivo mostra come utilizzare il ciclo for per visualizzare un timer del conto alla rovescia. Questo timer del conto alla rovescia mostra solo i secondi rimanenti, a partire da 10.
Se vuoi cambiare il numero di partenza, devi solo modificare il valore della variabile $seconds
nel segnaposto Iniziale.
Eseguendo il codice sopra in PowerShell, otterrai l’output di esempio seguente.

Visualizzazione di un Timer del Conto alla Rovescia (Ciclo For Annidato)
Se vuoi visualizzare il timer di conto alla rovescia utilizzando il formato minuti:secondi
, il ciclo annidato può essere utilizzato per realizzare ciò. Un ciclo for annidato è semplicemente definito come un ciclo for all’interno di un altro ciclo for e così via.
Il codice di esempio qui sotto contiene due dichiarazioni di ciclo for.
Il primo ciclo for gestisce il conto alla rovescia della parte dei minuti del timer. Come puoi vedere, c’è una variabile $minuti
prima del ciclo for dove devi indicare il numero di minuti da cui il ciclo for inizierà il conto alla rovescia.
Il secondo ciclo for gestisce il conto alla rovescia della parte dei secondi del timer. Dopo ogni iterazione, il ciclo si mette in pausa per 1 secondo prima di riprendere. Continuerà a farlo fino a quando il valore di $secondi
raggiunge 0.
Quando viene eseguito il codice sopra, di seguito è riportato l’aspetto che avrà il timer di conto alla rovescia.

Determinare un Numero Primo
Il ciclo for di PowerShell è anche una buona scelta per le operazioni matematiche. In questo esempio, il ciclo for è utilizzato per determinare se un dato numero è un numero primo.
A prime number is a number that is only divisible by 1 and N, where N is the number itself. For example, if the value of N is 7, then N divided by 1
is 7 divided by 1
.
Lo script qui sotto, quando eseguito, eseguirà quanto segue:
- Richiede all’utente di inserire un numero.
- Esegue la divisione utilizzando il numero inserito come dividendo, e i divisori sono i numeri da 2 al numero inserito meno 1. Ciò significa che se il valore inserito è 7, i divisori sono 2,3,4,5 e 6, rispettivamente.
- Se il quoziente è un numero intero, ciò significa che il numero di input non è un numero primo e quindi il ciclo for sarà terminato.
- Se il quoziente non è un numero intero, ciò significa che il numero di input è un numero primo.
Copia e salva questo script come isPrime.ps1
.
Una volta salvato lo script isPrime.ps1
, eseguilo in PowerShell per testarlo. A scopo dimostrativo, consulta l’esempio di output riportato di seguito.

Riepilogo
Il ciclo for di PowerShell non presenta sorprese se confrontato con il funzionamento dei cicli for utilizzati in altri linguaggi, il che rende più facile adattarlo se non sei nuovo al concetto.
In questo articolo hai imparato le basi dell’istruzione di ciclo for di PowerShell. Hai appreso la sua sintassi, logica, flusso e hai persino imparato da diversi esempi come utilizzarla per scopi diversi.
Ricorda che anche se ci sono altri tipi di cicli in PowerShell, non è corretto dire che uno è migliore dell’altro. Tutto dipende dallo scopo del codice e dalle preferenze di chi lo scrive.
Utilizzando le conoscenze acquisite da questo articolo, dovresti essere in grado di trovare modi per applicare il ciclo for in modo più automatizzato alle tue solite attività noiose.