about_Foreach-Parallel
KORTE BESCHRIJVING
Beschrijft de ForEach -Parallel
taalconstructie in Windows PowerShell Workflow.
LANGE BESCHRIJVING
Met de parameter Parallel van het ForEach
trefwoord worden de opdrachten in een ForEach
scriptblok eenmaal uitgevoerd voor elk item in een opgegeven verzameling.
De items in de verzameling, zoals een schijf in een verzameling schijven, worden parallel verwerkt. De opdrachten in het scriptblok worden opeenvolgend uitgevoerd op elk item in de verzameling.
ForEach -Parallel
is alleen geldig in een Windows PowerShell-werkstroom.
SYNTAXIS
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
GEDETAILLEERDE BESCHRIJVING
Net als de ForEach-instructie in Windows PowerShell moet de variabele met verzameling $<collection>
worden gedefinieerd vóór de ForEach -Parallel
instructie, maar de variabele die het huidige item $<item>
vertegenwoordigt, wordt gedefinieerd in de ForEach -Parallel
instructie.
De ForEach -Parallel
constructie verschilt van het ForEach
trefwoord en de parameter Parallel . Het ForEach
trefwoord verwerkt de items in de verzameling op volgorde. Met de parameter Parallel worden opdrachten in een scriptblok parallel uitgevoerd. U kunt een parallel scriptblok insluiten in een ForEach -Parallel
scriptblok.
De doelcomputers in een werkstroom, zoals de computers die zijn opgegeven door de algemene parameter van de PSComputerName-werkstroom , worden altijd parallel verwerkt.
U hoeft hiervoor niet het ForEach -Parallel
trefwoord op te geven.
VOORBEELDEN
De volgende werkstroom bevat een ForEach -Parallel
instructie waarmee de schijven worden verwerkt die de Get-Disk
activiteit ontvangt. De opdrachten in het ForEach -Parallel
scriptblok worden opeenvolgend uitgevoerd, maar ze worden parallel uitgevoerd op de schijven. De schijven kunnen gelijktijdig en in elke willekeurige volgorde worden verwerkt.
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
}
}
In deze versie van de werkstroom worden de Get-Process
en Get-Service
opdrachten parallel uitgevoerd. De werkstroomfunctie gaat verder met de ForEach -Parallel
lus waar de opdrachten opeenvolgend worden uitgevoerd, maar ze worden parallel op de schijven uitgevoerd. De parallelle opdrachten en de ForEach -Parallel
lus worden gelijktijdig uitgevoerd.
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}
}
}
}