Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
КРАТКОЕ ОПИСАНИЕ
Описывает конструкцию foreach -Parallel
языка в рабочем процессе Windows PowerShell.
ПОДРОБНОЕ ОПИСАНИЕ
Параметр Parallel ключевого foreach
слова выполняет команды в блоке foreach
скрипта один раз для каждого элемента в указанной коллекции.
Элементы в коллекции, такие как диск в коллекции дисков, обрабатываются параллельно. Команды в блоке скрипта выполняются последовательно для каждого элемента в коллекции.
foreach -Parallel
действителен только в рабочем процессе Windows PowerShell.
SYNTAX
foreach -Parallel ($<item> in $<collection>) {
[<Activity1>]
[<Activity2>]
...
}
ПОДРОБНОЕ ОПИСАНИЕ
Как и инструкция foreach
в Windows PowerShell, переменная, содержащая коллекцию $<collection>
, должна быть определена перед инструкцией foreach -Parallel
, но переменная, представляющая текущий элемент $<item>
, определена в инструкции foreach -Parallel
.
Конструкция foreach -Parallel
отличается от ключевого foreach
слова и параметра Parallel . Ключевое foreach
слово обрабатывает элементы в коллекции в последовательности. Параллельный параметр выполняет команды в блоке скриптов параллельно. В блок скрипта можно заключить блок параллельных foreach -Parallel
скриптов.
Целевые компьютеры в рабочем процессе, например те, которые указаны общим параметром рабочего процесса PSComputerName , всегда обрабатываются параллельно.
Для этой цели не нужно указывать ключевое foreach -Parallel
слово.
Примеры
Следующий рабочий процесс содержит инструкцию foreach -Parallel
, которая обрабатывает диски, Get-Disk
которые получает действие. Команды в блоке foreach -Parallel
скрипта выполняются последовательно, но выполняются параллельно на дисках. Диски могут обрабатываться одновременно и в любом порядке.
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
}
}
В этой версии рабочего процесса Get-Process
Get-Service
команды выполняются параллельно. Функция рабочего процесса продолжает foreach -Parallel
цикл, в котором команды выполняются последовательно, но они выполняются на дисках параллельно. Параллельные команды и foreach -Parallel
цикл выполняются параллельно.
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}
}
}
}
См. также
PowerShell