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 ve Windows PowerShellu musí být proměnná obsahující kolekci $<collection> definována před ForEach -Parallel příkazem, ale proměnná představující aktuální položku $<item> je definována ForEach -Parallel v příkazu.

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é