Partilhar via


about_Foreach-Parallel

BREVE DESCRIÇÃO

Descreve a construção de 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 da 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 apenas em um fluxo de trabalho do Windows PowerShell.

SINTAXE

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 da coleção em sequência. O parâmetro Parallel executa comandos em um bloco de script em paralelo. Você pode incluir um bloco de script paralelo em um bloco de ForEach -Parallel script.

Os computadores de destino em um fluxo de trabalho, como os especificados pelo parâmetro comum de fluxo de trabalho PSComputerName , são sempre processados em paralelo. Não é necessário especificar a ForEach -Parallel palavra-chave para esta 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 onde os comandos são executados sequencialmente, mas eles 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}
       }
   }
}

Consulte Também