about_Foreach-Parallel

RÖVID LEÍRÁS

ForEach -Parallel A Windows PowerShell-munkafolyamat nyelvi szerkezetét ismerteti.

HOSSZÚ LEÍRÁS

A kulcsszó párhuzamos paramétere ForEach egy ForEach szkriptblokkban futtatja a parancsokat egy adott gyűjtemény minden eleméhez egyszer.

A gyűjtemény elemei, például egy lemezgyűjtemény lemezei párhuzamosan lesznek feldolgozva. A szkriptblokk parancsai egymás után futnak a gyűjtemény minden elemén.

ForEach -Parallel csak Windows PowerShell-munkafolyamatokban érvényes.

SZINTAXIS

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

RÉSZLETES LEÍRÁS

A Windows PowerShell ForEach utasításához hasonlóan a gyűjteményt $<collection> tartalmazó változót az ForEach -Parallel utasítás előtt kell definiálni, de az aktuális elemet $<item> képviselő változót az ForEach -Parallel utasítás határozza meg.

A ForEach -Parallel szerkezet eltér a ForEach kulcsszótól és a Párhuzamos paramétertől. A ForEach kulcsszó sorrendben dolgozza fel a gyűjtemény elemeit. A Párhuzamos paraméter parancsokat futtat párhuzamosan egy szkriptblokkban. A párhuzamos szkriptblokkokat egy szkriptblokkba ForEach -Parallel is belefoglalhatja.

A munkafolyamat célszámítógépei, például a PSComputerName munkafolyamat közös paramétere által megadott célszámítógépek feldolgozása mindig párhuzamosan történik. Ehhez nem kell megadnia a ForEach -Parallel kulcsszót.

PÉLDÁK

Az alábbi munkafolyamat egy utasítást ForEach -Parallel tartalmaz, amely feldolgozza a tevékenység által lekért lemezeket Get-Disk . A szkriptblokk parancsai ForEach -Parallel egymás után futnak, de párhuzamosan futnak a lemezeken. Előfordulhat, hogy a lemezek feldolgozása egyidejűleg és bármilyen sorrendben történik.

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

A munkafolyamat ezen verziójában a parancsok és Get-Service a Get-Process parancsok párhuzamosan futnak. A munkafolyamat-függvény továbbra is azt a ForEach -Parallel ciklust használja, amelyben a parancsok egymás után futnak, de párhuzamosan futnak a lemezeken. A párhuzamos parancsok és a ForEach -Parallel hurok párhuzamosan futnak.

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

Kapcsolódó információk