about_Foreach 병렬
간단한 설명
Windows PowerShell 워크플로의 ForEach -Parallel
언어 구문에 대해 설명합니다.
자세한 설명
키워드의 ForEach
Parallel 매개 변수는 지정된 컬렉션의 각 항목에 ForEach
대해 스크립트 블록에서 명령을 한 번 실행합니다.
디스크 컬렉션의 디스크와 같은 컬렉션의 항목은 병렬로 처리됩니다. 스크립트 블록의 명령은 컬렉션의 각 항목에서 순차적으로 실행됩니다.
ForEach -Parallel
는 Windows PowerShell 워크플로에서만 유효합니다.
통사론
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
자세한 설명
Windows PowerShell의 ForEach 문과 마찬가지로 컬렉션 $<collection>
이 포함된 변수는 문 앞에 ForEach -Parallel
정의되어야 하지만 현재 항목을 $<item>
나타내는 변수는 문에 ForEach -Parallel
정의되어 있습니다.
ForEach -Parallel
구문은 키워드 및 Parallel 매개 변수와 다릅니다ForEach
. 키워드는 ForEach
컬렉션의 항목을 순서대로 처리합니다. 병렬 매개 변수는 스크립트 블록에서 명령을 병렬로 실행합니다. 스크립트 블록에 병렬 스크립트 블록을 묶을 ForEach -Parallel
수 있습니다.
PSComputerName 워크플로 공통 매개 변수에 지정된 컴퓨터와 같은 워크플로의 대상 컴퓨터는 항상 병렬로 처리됩니다.
이 목적을 위해 키워드를 ForEach -Parallel
지정할 필요가 없습니다.
예제
다음 워크플로에는 활동이 가져오는 디스크를 Get-Disk
처리하는 문이 포함되어 ForEach -Parallel
있습니다. 스크립트 블록의 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