Sdílet prostřednictvím


about_Foreach-Parallel

KRÁTKÝ POPIS

Popisuje konstruktor jazyka foreach -Parallel v pracovním postupu Windows PowerShellu.

DLOUHÝ POPIS

Parametr Parallel klíčového foreach slova spouští příkazy v foreach bloku skriptu jednou pro každou položku v zadané kolekci.

Položky v kolekci, například disk v kolekci disků, se zpracovávají paralelně. Příkazy v bloku skriptu se spouštějí postupně u každé položky v kolekci.

foreach -Parallel je platný pouze v pracovním postupu Windows PowerShellu.

SYNTAXE

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

PODROBNÝ POPIS

Stejně jako příkaz foreach v prostředí Windows PowerShell musí být proměnná obsahující kolekci $<collection> definována před příkazem foreach -Parallel, ale proměnná představující aktuální položku $<item> je definována v příkazu foreach -Parallel.

Konstruktor foreach -Parallel se liší od klíčového foreach slova a parametru Parallel . Klíčové foreach slovo zpracovává položky v kolekci v posloupnosti. Parametr Parallel spouští příkazy v bloku skriptu paralelně. Blok paralelního foreach -Parallel skriptu můžete uzavřít do bloku skriptu.

Cílové počítače v pracovním postupu, například počítače určené běžným parametrem pracovního postupu PSComputerName , se vždy zpracovávají paralelně. Pro tento účel nemusíte zadávat foreach -Parallel klíčové slovo.

PŘÍKLADY

Následující pracovní postup obsahuje foreach -Parallel příkaz, který zpracovává disky, které Get-Disk aktivita získá. Příkazy v foreach -Parallel bloku skriptu se spouštějí postupně, ale běží paralelně na discích. Disky se můžou zpracovávat souběžně a v libovolném pořadí.

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

V této verzi pracovního postupu Get-ProcessGet-Service se příkazy spouští paralelně. Funkce pracovního postupu pokračuje ve foreach -Parallel smyčce, ve které se příkazy spouštějí postupně, ale běží paralelně na discích. Paralelní příkazy a smyčka foreach -Parallel se spouští souběžně.

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

Viz také