about_Foreach-Parallel

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_ForEach-Parallel

KURZE BESCHREIBUNG

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

LANGE BESCHREIBUNG

Der Parameter Parallel des Schlüsselworts ForEach führt die Befehle eines ForEach-Skriptblocks einmal für jedes Element einer angegebenen Datengruppe aus.

Die Elemente der Datengruppe, beispielsweise die Datenträger einer Sammlung aus Datenträgern, werden parallel verarbeitet. Die Befehle des Skriptblocks werden nacheinander für jedes Element der Datengruppe ausgeführt.

ForEach -Parallel ist nur in einem Windows PowerShell-Workflow gültig.

SYNTAX

    ForEach -Parallel ($<item> in $<collection>)
    {
        [<Activity1>]
        [<Activity2>]
        ...
    }

AUSFÜHRLICHE BESCHREIBUNG

Wie schon bei der Windows PowerShell-Anweisung ForEach muss die Variable, die die Datengruppe enthält ($<Collection>), vor der Anweisung ForEach -Parallel definiert werden; die Variable, die das aktuelle Element darstellt ($<item>), wird dagegen in der Anweisung ForEach -Parallel definiert.

Die ForEach -Parallel-Konstrukt unterscheidet sich von den Schlüsselwörtern ForEach und Parallel. Das Schlüsselwort ForEach verarbeitet die Elemente einer Datengruppe der Reihe nach. Das Schlüsselwort Parallel führt die Befehle eines Skriptblocks parallel aus. Sie können einen Parallel-Skriptblock in einen ForEach -Parallel-Skriptblock einschließen.

Die Zielcomputer eines Workflows, beispielsweise die durch den allgemeinen Workflowparameter PSComputerName angegebenen Computer, werden immer parallel verarbeitet. Zu diesem Zweck brauchen Sie das Schlüsselwort ForEach -Parallel nicht anzugeben.

BEISPIELE

Der folgende Workflow enthält eine ForEach -Parallel-Anweisung, die die von der Aktivität Get-Disk abgerufenen Datenträger verarbeitet. Die Befehle des ForEach -Parallel-Skriptblocks werden nacheinander, jedoch für die einzelnen Datenträger parallel ausgeführt. Der Datenträger werden möglicherweise gleichzeitig und in beliebiger Reihenfolge verarbeitet.

        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
            }
        }



        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}
               }
           }
        }

SIEHE AUCH

Schreiben eines Skriptworkflows (https://go.microsoft.com/fwlink/?LinkId=262872)

about_ForEach

about_Language_Keywords

Informationen über_Parallel

about_Workflows