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