Come uscire da un oggetto Foreach in PowerShell

  1. Usa la Condizione break per Uscire da ForEach-Object in PowerShell
  2. Usa if e break per Uscire da ForEach-Object in PowerShell
  3. Usa if e return per Uscire da ForEach-Object in PowerShell
  4. Usa if e continue per Uscire da ForEach-Object in PowerShell
  5. Conclusione
Come uscire da un oggetto Foreach in PowerShell

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:

uscita da foreach oggetto in powershell - output 1

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:

uscita dall’oggetto foreach in powershell - output 2

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:

uscita dal ciclo foreach oggetto in powershell - output 3

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:

uscita da foreach oggetto in powershell - output 4

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.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Articolo correlato - PowerShell Object