Compartilhar via


about_Foreach-Parallel

DESCRIÇÃO BREVE

Descreve a construção da ForEach -Parallel linguagem no fluxo de trabalho do Windows PowerShell.

DESCRIÇÃO LONGA

O parâmetro Parallel da palavra-chave executa os comandos em um ForEach bloco de ForEach script uma vez para cada item em uma coleção especificada.

Os itens na coleção, como um disco em uma coleção de discos, são processados em paralelo. Os comandos no bloco de script são executados sequencialmente em cada item da coleção.

ForEach -Parallel é válido somente em um fluxo de trabalho do Windows PowerShell.

SYNTAX

ForEach -Parallel ($<item> in $<collection>)
{
    [<Activity1>]
    [<Activity2>]
    ...
}

DESCRIÇÃO DETALHADA

Como a instrução ForEach no Windows PowerShell, a variável que contém a coleção $<collection> deve ser definida antes da ForEach -Parallel instrução, mas a variável que representa o item $<item> atual é definida na ForEach -Parallel instrução.

A ForEach -Parallel construção é diferente da ForEach palavra-chave e do parâmetro Parallel . A ForEach palavra-chave processa os itens na coleção em sequência. O parâmetro Parallel executa comandos em um bloco de script em paralelo. Você pode colocar um bloco de script paralelo em um ForEach -Parallel bloco de script.

Os computadores de destino em um fluxo de trabalho, como aqueles especificados pelo parâmetro comum do fluxo de trabalho PSComputerName , são sempre processados em paralelo. Você não precisa especificar a ForEach -Parallel palavra-chave para essa finalidade.

EXEMPLOS

O fluxo de trabalho a seguir contém uma ForEach -Parallel instrução que processa os discos que a Get-Disk atividade obtém. Os comandos no ForEach -Parallel bloco de script são executados sequencialmente, mas são executados nos discos em paralelo. Os discos podem ser processados simultaneamente e em qualquer ordem.

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
    }
}

Nesta versão do fluxo de trabalho, os Get-Process comandos e Get-Service são executados em paralelo. A função de fluxo de trabalho continua até o ForEach -Parallel loop em que os comandos são executados sequencialmente, mas são executados nos discos em paralelo. Os comandos paralelos e o ForEach -Parallel loop são executados simultaneamente.

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}
       }
   }
}

Confira também