Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 3.0
РАЗДЕЛ
about_ForEach-Parallel
КРАТКОЕ ОПИСАНИЕ
Содержит описание языковой конструкции ForEach -Parallel в рабочем процессе Windows PowerShell®.
ПОДРОБНОЕ ОПИСАНИЕ
Параметр Parallel ключевого слова ForEach служит для выполнения команд в блоке сценария ForEach один раз для каждого элемента в указанной коллекции.
Элементы коллекции, например диск в коллекции дисков, обрабатываются параллельно. Команды в блоке сценария выполняются последовательно применительно к каждому элементу коллекции.
Конструкция ForEach -Parallel допустима только в рабочем процессе Windows PowerShell.
СИНТАКСИС
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
ПОДРОБНОЕ ОПИСАНИЕ
Как и в случае с оператором ForEach в Windows PowerShell, переменную, содержащую коллекцию ($<Коллекция>), необходимо определить до оператора ForEach -Parallel, но переменная, которая представляет текущий элемент ($<Элемент>), определяется в самом операторе ForEach –Parallel.
Конструкция ForEach -Parallel отличается от ключевых слов ForEach и Parallel. Ключевое слово ForEach обрабатывает элементы коллекции по порядку. Ключевое слово Parallel выполняет команды в блоке сценария в параллельном режиме. Блок сценария Parallel можно включить в блок сценария 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
}
}
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}
}
}
}
СМ. ТАКЖЕ
Создание рабочего процесса сценария (https://go.microsoft.com/fwlink/?LinkId=262872)
about_ForEach
about_Language_Keywords
about_Parallel
about_Workflows