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 eenmaal uitgevoerd in een ForEach scriptblok 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 -Parallelis 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 die verzameling $<collection> bevat, 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. De parameter Parallel voert opdrachten uit in een scriptblok parallel. 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 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 krijgt. 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 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 opdrachten parallel Get-Service uitgevoerd. De werkstroomfunctie blijft de ForEach -Parallel lus waar de opdrachten opeenvolgend worden uitgevoerd, maar ze worden parallel uitgevoerd op de schijven. 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}
}
}
}