Delen via


about_Foreach-Parallel

KORTE BESCHRIJVING

Beschrijft de ForEach -Parallel taalconstructie in Windows PowerShell Workflow.

LANGE BESCHRIJVING

Met de parameter Parallel van het ForEach trefwoord worden de opdrachten in een ForEach scriptblok eenmaal uitgevoerd voor elk item in een opgegeven verzameling.

De items in de verzameling, zoals een schijf in een verzameling schijven, worden parallel verwerkt. De opdrachten in het scriptblok worden opeenvolgend uitgevoerd op elk item in de verzameling.

ForEach -Parallel is alleen geldig in een Windows PowerShell-werkstroom.

SYNTAXIS

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

GEDETAILLEERDE BESCHRIJVING

Net als de ForEach-instructie in Windows PowerShell moet de variabele met verzameling $<collection> worden gedefinieerd vóór de ForEach -Parallel instructie, maar de variabele die het huidige item $<item> vertegenwoordigt, wordt gedefinieerd in de ForEach -Parallel instructie.

De ForEach -Parallel constructie verschilt van het ForEach trefwoord en de parameter Parallel . Het ForEach trefwoord verwerkt de items in de verzameling op volgorde. Met de parameter Parallel worden opdrachten in een scriptblok parallel uitgevoerd. U kunt een parallel scriptblok insluiten in een ForEach -Parallel scriptblok.

De doelcomputers in een werkstroom, zoals de computers die zijn opgegeven door de algemene parameter van de PSComputerName-werkstroom , worden altijd parallel verwerkt. U hoeft hiervoor niet het ForEach -Parallel trefwoord op te geven.

VOORBEELDEN

De volgende werkstroom bevat een ForEach -Parallel instructie waarmee de schijven worden verwerkt die de Get-Disk activiteit ontvangt. De opdrachten in het ForEach -Parallel scriptblok worden opeenvolgend uitgevoerd, maar ze worden parallel uitgevoerd op de schijven. De schijven kunnen gelijktijdig en in elke willekeurige volgorde worden verwerkt.

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 deze versie van de werkstroom worden de Get-Process en Get-Service opdrachten parallel uitgevoerd. De werkstroomfunctie gaat verder met de ForEach -Parallel lus waar de opdrachten opeenvolgend worden uitgevoerd, maar ze worden parallel op de schijven uitgevoerd. De parallelle opdrachten en de ForEach -Parallel lus worden gelijktijdig uitgevoerd.

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

Zie ook