Come uscire da un oggetto Foreach in PowerShell
-
Usa la Condizione
break
per Uscire daForEach-Object
in PowerShell -
Usa
if
ebreak
per Uscire daForEach-Object
in PowerShell -
Usa
if
ereturn
per Uscire daForEach-Object
in PowerShell -
Usa
if
econtinue
per Uscire daForEach-Object
in PowerShell - Conclusione

Il cmdlet ForEach-Object
consente all’utente di iterare attraverso collezioni e operare su ciascun elemento di una collezione di oggetti di input. In ForEach-Object
, gli oggetti di input vengono passati al cmdlet o specificati utilizzando il parametro -InputObject
.
Ci sono due modi diversi di costruire un comando ForEach-Object
in PowerShell: Blocco di script
e Dichiarazione di operazione
. Il cmdlet ForEach-Object
esegue il blocco di script o la dichiarazione di operazione di ciascun oggetto di input.
Usa un blocco di script
per specificare l’operazione. La variabile $_
è utilizzata all’interno del blocco di script per rappresentare l’oggetto di input corrente.
Il blocco di script
può contenere qualsiasi script PowerShell. Ad esempio, il seguente comando ottiene il valore della proprietà Name
di ciascun cmdlet, funzione e alias
installati sul computer.
Get-Command | ForEach-Object { $_.Name }
Un altro modo per costruire il comando ForEach-Object
è utilizzare la dichiarazione di operazione
. Puoi specificare un valore di proprietà o chiamare un metodo con la dichiarazione di operazione.
Get-Command | ForEach-Object Name
A volte ci sono situazioni in cui potresti voler uscire da ForEach-Object
, ma funziona in modo diverso rispetto alla dichiarazione ForEach
. In ForEach-Object
, la dichiarazione viene eseguita non appena ogni oggetto viene prodotto.
Nella dichiarazione ForEach
, tutti gli oggetti vengono raccolti prima che il ciclo venga eseguito. Il ForEach-Object
è un cmdlet, non un vero ciclo.
Quando usi break
o continue
per uscire dal ciclo, l’intero script viene terminato invece di saltare la dichiarazione successiva. Tuttavia, è possibile uscire dall’oggetto ForEach-Object
utilizzando alcune condizioni in PowerShell.
Usa la Condizione break
per Uscire da ForEach-Object
in PowerShell
In PowerShell, il ciclo foreach-object
è comunemente usato per iterare su ciascun elemento in una collezione o pipeline. Occasionalmente, può nascere la necessità di uscire da questo ciclo anticipatamente in base a determinate condizioni.
La dichiarazione break
fornisce un modo semplice per ottenere questo obiettivo, terminando immediatamente il ciclo quando viene soddisfatta una condizione specifica.
$numbers = "one", "two", "three", "four", "five"
$Break = $False;
$numbers | Where-Object { $Break -eq $False } | ForEach-Object {
$Break = $_ -eq "three";
Write-Host "The number is $_.";
}
In questo frammento di codice, inizializziamo un array $numbers
contenente stringhe che rappresentano numeri. Impostiamo anche $Break
su $False
inizialmente.
All’interno del ciclo foreach-object
, utilizziamo Where-Object
per filtrare gli elementi in base alla variabile $Break
. Se $Break
è $False
, il ciclo continua; altrimenti, si ferma.
All’interno del ciclo, controlliamo se l’elemento corrente è uguale a three
. Se lo è, impostiamo $Break
su $True
, causando la terminazione del ciclo.
Output:
Usa if
e break
per Uscire da ForEach-Object
in PowerShell
A volte, c’è la necessità di uscire da questo ciclo in modo anticipato in base a condizioni specifiche. Il metodo if
offre un approccio semplice per raggiungere questo obiettivo valutando una condizione all’interno del ciclo e attivando un’uscita quando la condizione viene soddisfatta.
In questo metodo, è necessario usare un valore vuoto
in una collezione di oggetti per uscire da ForEach-Object
in PowerShell. Ad esempio, puoi usare la condizione if
per uscire da ForEach-Object
.
$numbers = "one", "two", "three", "", "four"
$numbers | ForEach-Object {
if ($_ -eq "") {
break;
}
Write-Host "The number is $_."
}
Nel frammento di codice fornito, inizializziamo un array $numbers
contenente stringhe che rappresentano numeri. All’interno del ciclo foreach-object
, iteriamo su ciascun elemento dell’array.
Utilizzando la dichiarazione if
, controlliamo se l’elemento corrente $_
è una stringa vuota. Se la condizione è vera, utilizziamo break
per uscire immediatamente dal ciclo.
Altrimenti, il ciclo continua e produciamo l’attuale numero utilizzando Write-Host
.
Output:
Usa if
e return
per Uscire da ForEach-Object
in PowerShell
Uscire da un ciclo foreach-object
in PowerShell utilizzando la combinazione dei metodi if
e return
consente la terminazione anticipata del ciclo in base a condizioni specifiche. Questo metodo è particolarmente utile quando è necessario fermare l’esecuzione del ciclo e restituire il controllo al chiamante quando viene soddisfatta una certa condizione.
All’interno del ciclo, viene impiegata una dichiarazione if
per valutare la condizione per uscire dal ciclo. Se la condizione è vera, la dichiarazione return
viene eseguita, terminando immediatamente l’esecuzione del ciclo e restituendo il controllo al chiamante.
$numbers = "one", "two", "three", "four", "five"
$numbers | ForEach-Object {
if ($_ -eq "three") {
return
}
Write-Host "The number is $_."
}
Nel frammento di codice fornito, inizializziamo un array $numbers
contenente stringhe che rappresentano numeri. All’interno del ciclo foreach-object
, iteriamo su ciascun elemento dell’array.
Utilizzando la dichiarazione if
, controlliamo se l’elemento corrente $_
è uguale a three
. Se la condizione è vera, utilizziamo return
per uscire immediatamente dal ciclo.
Altrimenti, il ciclo continua e produciamo l’attuale numero utilizzando Write-Host
.
Output:
Usa if
e continue
per Uscire da ForEach-Object
in PowerShell
In PowerShell, la dichiarazione continue
è utilizzata per saltare il resto dell’attuale iterazione di un ciclo e procedere alla successiva iterazione. Sebbene venga principalmente impiegata nei cicli per saltare iterazioni specifiche, continue
può anche essere utilizzata per implementare una forma di uscita dal ciclo all’interno di un ciclo foreach-object
.
Posizionando strategicamente la dichiarazione continue
all’interno del ciclo e incorporando logica condizionale, puoi ottenere la terminazione anticipata del ciclo in base a condizioni specifiche.
$numbers = 1..10
$numbers | ForEach-Object {
if ($_ -eq 5) {
continue
}
Write-Host "Number: $_"
}
Nel codice di esempio fornito, inizializziamo un array $numbers
contenente numeri da 1 a 10. All’interno del ciclo foreach-object
, iteriamo su ciascun numero dell’array.
Utilizzando la dichiarazione if
, controlliamo se l’attuale numero è uguale a 5. Se la condizione è vera, la dichiarazione continue
viene eseguita, causando al ciclo di saltare l’attuale iterazione e procedere a quella successiva.
Questo raggiunge effettivamente la terminazione anticipata del ciclo quando la condizione specificata è soddisfatta.
Output:
Conclusione
Per riassumere, il cmdlet ForEach-Object
in PowerShell facilita l’iterazione attraverso le collezioni, consentendo operazioni su ciascun elemento in modo individuale. Abbiamo esplorato vari metodi per uscire anticipatamente da un ciclo ForEach-Object
, inclusi l’uso di break
, return
e continue
.
Mentre break
e continue
forniscono un controllo diretto del flusso all’interno del ciclo, return
offre un approccio alternativo per uscire dal ciclo e tornare al chiamante. Ogni metodo ha i propri casi d’uso e vantaggi, fornendo flessibilità nell’esecuzione degli script.
In futuro, gli utenti possono approfondire la loro comprensione sperimentando con questi metodi in diversi scenari, esplorando le loro sfumature e padroneggiando la loro applicazione nella scrittura di script PowerShell.