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