Udostępnij przez


about_Foreach-Parallel

KRÓTKI OPIS

Opisuje konstrukcję języka w przepływie foreach -Parallel pracy programu Windows PowerShell.

DŁUGI OPIS

Parametr Parallel słowa kluczowego foreach uruchamia polecenia w foreach bloku skryptu raz dla każdego elementu w określonej kolekcji.

Elementy w kolekcji, takie jak dysk w kolekcji dysków, są przetwarzane równolegle. Polecenia w bloku skryptu są uruchamiane sekwencyjnie na każdym elemencie w kolekcji.

foreach -Parallel jest prawidłowy tylko w przepływie pracy programu Windows PowerShell.

SKŁADNIA

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

SZCZEGÓŁOWY OPIS

Podobnie jak instrukcja foreach w programie Windows PowerShell, zmienna zawierająca $<collection> kolekcji musi być zdefiniowana przed instrukcją foreach -Parallel, ale zmienna reprezentująca bieżący element $<item> jest zdefiniowana w instrukcji foreach -Parallel.

Konstrukcja foreach -Parallel różni się od słowa kluczowego foreach i parametru Parallel . Słowo foreach kluczowe przetwarza elementy w kolekcji w sekwencji. Parametr Parallel uruchamia polecenia w bloku skryptu równolegle. Blok skryptu równoległego można ująć w blok skryptu foreach -Parallel .

Komputery docelowe w przepływie pracy, takie jak te określone przez wspólny parametr przepływu pracy PSComputerName , są zawsze przetwarzane równolegle. W tym celu nie trzeba określać słowa kluczowego foreach -Parallel .

PRZYKŁADY

Poniższy przepływ pracy zawiera instrukcję foreach -Parallel , która przetwarza dyski, które Get-Disk pobiera działanie. Polecenia w bloku skryptu foreach -Parallel są uruchamiane sekwencyjnie, ale działają równolegle na dyskach. Dyski mogą być przetwarzane współbieżnie i w dowolnej kolejności.

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

W tej wersji przepływu pracy Get-Process polecenia i Get-Service są uruchamiane równolegle. Funkcja przepływu pracy kontynuuje pętlę foreach -Parallel , w której polecenia są uruchamiane sekwencyjnie, ale działają równolegle na dyskach. Polecenia równoległe i pętla foreach -Parallel są uruchamiane współbieżnie.

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

Zobacz też