Freigeben über


Informationen über_Foreach-Parallel

KURZE BESCHREIBUNG

Beschreibt das ForEach -Parallel Sprachkonstrukt in Windows PowerShell-Workflow.

LANGE BESCHREIBUNG

Der Parallel-Parameter der ForEach Schlüsselwort (keyword) 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 von der ForEach Schlüsselwort (keyword) und dem Parallel-Parameter. Die ForEach Schlüsselwort (keyword) verarbeitet die Elemente in der Auflistung sequenziert. 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 die ForEach -Parallel Schlüsselwort (keyword) 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}
       }
   }
}

Weitere Informationen