Informationen über_Foreach-Parallel
KURZE BESCHREIBUNG
Beschreibt das ForEach -Parallel
Sprachkonstrukt in Windows PowerShell-Workflow.
LANGE BESCHREIBUNG
Der Parallel-Parameter des ForEach
Schlüsselworts führt die Befehle in einem ForEach
Skriptblock einmal für jedes Element in einer angegebenen Auflistung aus.
Die Elemente in der Auflistung, z. B. ein Datenträger in einer Sammlung von Datenträgern, werden parallel verarbeitet. Die Befehle im Skriptblock werden sequenziell für jedes Element in der Auflistung ausgeführt.
ForEach -Parallel
ist nur in einem Windows PowerShell-Workflow gültig.
SYNTAX
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
DETAILLIERTE BESCHREIBUNG
Wie die ForEach-Anweisung in Windows PowerShell muss die Variable, die Auflistung $<collection>
enthält, vor der ForEach -Parallel
Anweisung definiert werden, die Variable, die das aktuelle Element $<item>
darstellt, in der ForEach -Parallel
Anweisung definiert ist.
Das ForEach -Parallel
Konstrukt unterscheidet sich vom ForEach
Schlüsselwort und dem Parallel-Parameter . Das ForEach
Schlüsselwort verarbeitet die Elemente in der Auflistung in Sequenz. Der Parameter Parallel führt Befehle in einem Skriptblock parallel aus. Sie können einen parallelen Skriptblock in einen ForEach -Parallel
Skriptblock einschließen.
Die Zielcomputer in einem Workflow, z. B. die vom allgemeinen PSComputerName-Workflow angegebenen, werden immer parallel verarbeitet.
Sie müssen das ForEach -Parallel
Schlüsselwort für diesen Zweck nicht angeben.
BEISPIELE
Der folgende Workflow enthält eine ForEach -Parallel
Anweisung, die die von der Get-Disk
Aktivität erhaltenen Datenträger verarbeitet. Die Befehle im ForEach -Parallel
Skriptblock werden sequenziell ausgeführt, aber sie werden parallel auf den Datenträgern ausgeführt. Die Datenträger können gleichzeitig und in beliebiger Reihenfolge verarbeitet werden.
workflow Test-Workflow
{
$Disks = Get-Disk
# The disks are processed in parallel.
ForEach -Parallel ($Disk in $Disks)
{
# The commands run sequentially on each disk.
$DiskPath = $Disk.Path
$Disk | Initialize-Disk
Set-Disk -Path $DiskPath
}
}
In dieser Version des Workflows werden die Get-Process
Befehle parallel Get-Service
ausgeführt. Die Workflowfunktion wird weiterhin an der Schleife ausgeführt, in der ForEach -Parallel
die Befehle sequenziell ausgeführt werden, aber sie werden parallel auf den Datenträgern ausgeführt. Die parallelen Befehle und die ForEach -Parallel
Schleife werden gleichzeitig ausgeführt.
workflow Test-Workflow
{
#Run commands in parallel.
Parallel
{
Get-Process
Get-Service
}
$Disks = Get-Disk
# The disks are processed in parallel.
ForEach -Parallel ($Disk in $Disks)
{
# The commands run in parallel on each disk.
Parallel
{
Initialize-Disk
InlineScript {.\Get-DiskInventory}
}
}
}