Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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}
}
}
}