Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
KORT BESKRIVNING
Beskriver språkkonstruktionen foreach -Parallel i Windows PowerShell-arbetsflödet.
LÅNG BESKRIVNING
Parametern Parallell för nyckelordet foreach kör kommandona i ett skriptblock en foreach gång för varje objekt i en angiven samling.
Objekten i samlingen, till exempel en disk i en samling diskar, bearbetas parallellt. Kommandona i skriptblocket körs sekventiellt på varje objekt i samlingen.
foreach -Parallel är endast giltigt i ett Windows PowerShell-arbetsflöde.
SYNTAX
foreach -Parallel ($<item> in $<collection>) {
[<Activity1>]
[<Activity2>]
...
}
DETALJERAD BESKRIVNING
Precis som foreach-instruktionen i Windows PowerShell måste variabeln som innehåller samling $<collection> definieras före foreach -Parallel-instruktionen, men variabeln som representerar det aktuella objektet $<item> definieras i foreach -Parallel-instruktionen.
Konstruktionen foreach -Parallel skiljer sig från nyckelordet foreach och parametern Parallel . Nyckelordet foreach bearbetar objekten i samlingen i följd. Parametern Parallel kör kommandon i ett skriptblock parallellt. Du kan omsluta ett parallellskriptblock i ett foreach -Parallel skriptblock.
Måldatorerna i ett arbetsflöde, till exempel de som anges av den vanliga parametern för PSComputerName-arbetsflödet , bearbetas alltid parallellt.
Du behöver inte ange nyckelordet för det här ändamålet foreach -Parallel .
EXEMPEL
Följande arbetsflöde innehåller en foreach -Parallel instruktion som bearbetar diskarna som Get-Disk aktiviteten får. Kommandona i skriptblocket foreach -Parallel körs sekventiellt, men de körs parallellt på diskarna. Diskarna kan bearbetas samtidigt och i valfri ordning.
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
}
}
I den här versionen av arbetsflödet Get-Process körs kommandona och Get-Service parallellt. Arbetsflödesfunktionen fortsätter till loopen foreach -Parallel där kommandona körs sekventiellt, men de körs parallellt på diskarna. De parallella kommandona och loopen foreach -Parallel körs samtidigt.
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}
}
}
}