Partager via


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 de l’mot clé ForEach 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 de la 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 la 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}
       }
   }
}

Voir aussi