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