간단한 설명
Windows PowerShell 워크플로의 foreach -Parallel
언어 구문에 대해 설명합니다.
자세한 설명
키워드의 Parallelforeach
지정된 컬렉션의 각 항목에 foreach
대해 스크립트 블록에서 명령을 한 번 실행합니다.
디스크 컬렉션의 디스크와 같은 컬렉션의 항목은 병렬로 처리됩니다. 스크립트 블록의 명령은 컬렉션의 각 항목에서 순차적으로 실행됩니다.
foreach -Parallel
는 Windows PowerShell 워크플로에서만 유효합니다.
통사론
foreach -Parallel ($<item> in $<collection>) {
[<Activity1>]
[<Activity2>]
...
}
자세한 설명
Windows PowerShell의 foreach
문과 마찬가지로 컬렉션 $<collection>
포함하는 변수는 foreach -Parallel
문 앞에 정의되어야 하지만 현재 항목 $<item>
나타내는 변수는 foreach -Parallel
문에 정의되어 있습니다.
foreach -Parallel
구문은 키워드 및 Parallelforeach
다릅니다. 키워드는 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