about_Foreach-Parallel
DESCRIPCIÓN BREVE
Describe la construcción de lenguaje en el ForEach -Parallel
flujo de trabajo de Windows PowerShell.
DESCRIPCIÓN LARGA
El parámetro Parallel de la ForEach
palabra clave ejecuta los comandos en un ForEach
bloque de script una vez para cada elemento de una colección especificada.
Los elementos de la colección, como un disco de una colección de discos, se procesan en paralelo. Los comandos del bloque de script se ejecutan secuencialmente en cada elemento de la colección.
ForEach -Parallel
solo es válido en un flujo de trabajo de Windows PowerShell.
SINTAXIS
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
DESCRIPCIÓN DETALLADA
Al igual que la instrucción ForEach en Windows PowerShell, la variable que contiene la colección $<collection>
debe definirse antes de la ForEach -Parallel
instrucción , pero la variable que representa el elemento $<item>
actual se define en la ForEach -Parallel
instrucción .
La ForEach -Parallel
construcción es diferente de la ForEach
palabra clave y del parámetro Parallel . La ForEach
palabra clave procesa los elementos de la colección en secuencia. El parámetro Parallel ejecuta comandos en un bloque de script en paralelo. Puede incluir un bloque de script paralelo en un ForEach -Parallel
bloque de scripts.
Los equipos de destino de un flujo de trabajo, como los especificados por el parámetro común de flujo de trabajo PSComputerName , siempre se procesan en paralelo.
No es necesario especificar la ForEach -Parallel
palabra clave para este propósito.
EJEMPLOS
El flujo de trabajo siguiente contiene una ForEach -Parallel
instrucción que procesa los discos que obtiene la Get-Disk
actividad. Los comandos del ForEach -Parallel
bloque de script se ejecutan secuencialmente, pero se ejecutan en los discos en paralelo. Los discos se pueden procesar simultáneamente y en cualquier orden.
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
}
}
En esta versión del flujo de trabajo, los Get-Process
comandos y Get-Service
se ejecutan en paralelo. La función de flujo de trabajo continúa hasta el ForEach -Parallel
bucle donde se ejecutan los comandos secuencialmente, pero se ejecutan en los discos en paralelo. Los comandos paralelos y el ForEach -Parallel
bucle se ejecutan simultáneamente.
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 también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de