Esegue un'operazione su ogni set di oggetti di input.

Sintassi

ForEach-Object [-Process] <ScriptBlock[]> [-Begin <scriptblock>] [-End <scriptblock>] [-InputObject <psobject>] [<CommonParameters>]

Descrizione

Il cmdlet ForEach-Object esegue un'operazione in ogni set di oggetti di input. Gli oggetti di input possono essere reindirizzati al cmdlet o specificati utilizzando il parametro InputObject.

L'operazione da eseguire viene descritta in un blocco di script fornito al cmdlet come valore del parametro Process. Il blocco di script può contenere qualsiasi script di Windows PowerShell.

All'interno del blocco di script l'oggetto di input corrente è rappresentato dalla variabile $_.

Oltre all'utilizzo del blocco di script in cui vengono descritte le operazioni da eseguire in ogni oggetto di input, è possibile fornire altri due blocchi di script. Uno, specificato come valore del parametro Begin, viene eseguito prima dell'elaborazione del primo oggetto di input. L'altro, specificato come valore del parametro End, viene eseguito dopo l'elaborazione dell'ultimo oggetto di input.

I risultati della valutazione di tutti i blocchi di script, inclusi quelli specificati con Begin ed End, vengono passati attraverso la pipeline.

Parametri

-Begin <scriptblock>

Specifica un blocco di script da eseguire prima dell'elaborazione di qualsiasi oggetto di input.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-End <scriptblock>

Specifica un blocco di script da eseguire dopo l'elaborazione di tutti gli oggetti di input.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-InputObject <psobject>

Accetta un oggetto su cui il blocco di script specificato nel parametro Process può eseguire operazioni. Immettere una variabile contenente gli oggetti oppure digitare un comando o un'espressione che consente di ottenere gli oggetti.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByValue)

Accettare caratteri jolly?

false

-Process <ScriptBlock[]>

Specifica il blocco di script applicato a ogni oggetto in ingresso.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.Management.Automation.PSObject

È possibile reindirizzare qualsiasi oggetto a ForEach-Object.

Output

System.Management.Automation.PSObject

Gli oggetti restituiti da ForEach-Object vengono determinati dall'input.

Esempio 1

C:\PS>30000,56798,12432 | foreach-object -process {$_/1024}

Descrizione
-----------
Tramite questo comando viene accettata una matrice di valori integer, viene diviso ogni valore per 1024 e vengono visualizzati i risultati.






Esempio 2

C:\PS>get-childitem C:\ | foreach-object -process { $_.length / 1024 }

Descrizione
-----------
Tramite questo comando vengono recuperati i file e le directory nella radice dell'unità C: e ne vengono restituite e visualizzate le dimensioni di ciascuno di essi. Gli zero rappresentano le directory in cui le dimensioni dei file non sono disponibili.






Esempio 3

C:\PS>$events = get-eventlog -logname system -newest 1000

C:\PS> $events | foreach-object -begin {get-date} -process {out-file -filepath events.txt -append -inputobject $_.message} -end {get-date}

Descrizione
-----------
Tramite questo comando vengono recuperati i 1000 eventi più recenti dal registro eventi di sistema e tali eventi vengono quindi archiviati nella variabile $events. Gli eventi vengono quindi reindirizzati al cmdlet ForEach-Object. Tramite il parametro Begin vengono visualizzate la data e l'ora correnti. Tramite il parametro Process viene quindi utilizzato il cmdlet Out-File per creare un file di testo denominato events.txt e vengono archiviate le proprietà di messaggio di ognuno degli eventi inclusi nel file. Viene infine utilizzato il parametro End per visualizzare la data e l'ora al termine di tutte le operazioni di elaborazione.






Esempio 4

C:\PS>get-itemproperty -path hkcu:\Network\* | foreach-object {set-itemproperty -path $_.pspath -name RemotePath -value $_.RemotePath.ToUpper();}

Descrizione
-----------
Tramite questo comando viene impostato il valore della voce del Registro di sistema RemotePath in tutte le sottochiavi della chiave HKCU:\Network su testo maiuscolo. È possibile utilizzare questo formato per modificare il formato o il contenuto del valore di una voce del Registro di sistema.

Ogni sottochiave della chiave Network rappresenta un'unità di rete di cui è stato eseguito il mapping che si riconnetterà al momento dell'accesso. La voce RemotePath contiene il percorso UNC dell'unità collegata. Ad esempio, se si esegue il mapping dell'unità E: a \\Server\Share, sarà presente una sottochiave E di HKCU:\Network e il valore della voce del Registro di sistema RemotePath nella sottochiave E sarà \\Server\Share.

Tramite questo comando viene utilizzato il cmdlet Get-ItemProperty per ottenere tutte le sottochiavi della chiave Network e il cmdlet Set-ItemProperty per modificare il valore della voce del Registro di sistema RemotePath in ogni chiave. Nel comando Set-ItemProperty, il percorso è il valore della proprietà PSPath della chiave del Registro di sistema. (Si tratta di una proprietà dell'oggetto Microsoft .NET Framework che rappresenta la chiave del Registro di sistema; non è una voce del Registro di sistema). Nel comando viene utilizzato il metodo ToUpper() del valore RemotePath, che corrisponde a una stringa (REG_SZ).

Poiché Set-ItemProperty modifica la proprietà di ogni chiave, è necessario il cmdlet ForEach-Object per accedere alla proprietà.









Argomenti della Guida