Compartilhar via


about_Foreach-Parallel

Aplica-se a: Windows PowerShell 3.0

TÓPICO

about_ForEach-Parallel

DESCRIÇÃO BREVE

Descreve o constructo de linguagem ForEach -Parallel no fluxo de trabalho Windows PowerShell®

DESCRIÇÃO LONGA

O parâmetro Parallel da palavra-chave ForEach executa os comandos em um bloco de script ForEach 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 na coleção.

ForEach -Parallel só é válido em um fluxo de trabalho Windows PowerShell.

SINTAXE

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

DESCRIÇÃO DETALHADA

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

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

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

EXEMPLOS

O seguinte fluxo de trabalho contém uma instrução ForEach-Parallel que processa os discos que obtém a atividade do Get-Disk. Os comandos no bloco de script ForEach -Parallel são executados sequencialmente, mas 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
            }
        }



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

CONSULTE TAMBÉM

Gravando um fluxo de trabalho do Script (https://go.microsoft.com/fwlink/?LinkId=262872)

about_ForEach

about_Language_Keywords

about_Parallel

about_Workflows