about_Foreach-Parallel
업데이트 날짜: 2014년 5월
적용 대상: Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
항목
about_ForEach-Parallel
간단한 설명
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 구문은 ForEach 키워드 및 Parallel 키워드와 다릅니다. ForEach 키워드는 컬렉션의 항목을 순차적으로 처리합니다. Parallel 키워드는 스크립트 블록의 명령을 병렬로 실행합니다. Parallel 스크립트 블록을 a 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
}
}
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