about_Foreach-Parallel
DESCRIPTION COURTE
Décrit la ForEach -Parallel
construction de langage dans le flux de travail Windows PowerShell.
DESCRIPTION DÉTAILLÉE
Le paramètre Parallèle du ForEach
mot clé exécute les commandes d’un ForEach
bloc de script une fois pour chaque élément d’une collection spécifiée.
Les éléments de la collection, tels qu’un disque d’une collection de disques, sont traités en parallèle. Les commandes du bloc de script s’exécutent séquentiellement sur chaque élément de la collection.
ForEach -Parallel
est valide uniquement dans un workflow Windows PowerShell.
SYNTAX
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
DESCRIPTION DÉTAILLÉE
Comme l’instruction ForEach dans Windows PowerShell, la variable qui contient la collection $<collection>
doit être définie avant l’instruction ForEach -Parallel
, mais la variable qui représente l’élément $<item>
actif est définie dans l’instruction ForEach -Parallel
.
La ForEach -Parallel
construction est différente du ForEach
mot clé et du paramètre Parallel . Le ForEach
mot clé traite les éléments de la collection en séquence. Le paramètre Parallel exécute des commandes dans un bloc de script en parallèle. Vous pouvez placer un bloc de script parallèle dans un ForEach -Parallel
bloc de script.
Les ordinateurs cibles d’un flux de travail, tels que ceux spécifiés par le paramètre commun du flux de travail PSComputerName , sont toujours traités en parallèle.
Vous n’avez pas besoin de spécifier le ForEach -Parallel
mot clé à cet effet.
EXEMPLES
Le flux de travail suivant contient une ForEach -Parallel
instruction qui traite les disques que l’activité Get-Disk
obtient. Les commandes du bloc de ForEach -Parallel
script s’exécutent séquentiellement, mais elles s’exécutent sur les disques en parallèle. Les disques peuvent être traités simultanément et dans n’importe quel ordre.
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
}
}
Dans cette version du flux de travail, les Get-Process
commandes et Get-Service
les commandes sont exécutées en parallèle. La fonction de flux de travail continue vers la ForEach -Parallel
boucle où les commandes sont exécutées séquentiellement, mais elles s’exécutent sur les disques en parallèle. Les commandes parallèles et la boucle s’exécutent ForEach -Parallel
simultanément.
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}
}
}
}