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 kolekcję $<collection>
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}
}
}
}