about_Foreach-Parallel

適用対象: Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

トピック

about_ForEach-Parallel

概要

Windows PowerShell® ワークフローの ForEach -Parallel 言語コンストラクトについて説明します。

詳細説明

ForEach キーワードの Parallel パラメーターは、指定されたコレクション内の項目ごとに 1 回、ForEach スクリプト ブロック内のコマンドを実行します。

ディスク コレクション内のディスクなど、コレクション内の項目が並列に処理されます。スクリプト ブロック内のコマンドは、コレクション内の各項目に対して順番に実行されます。

ForEach -Parallel は、Windows PowerShell ワークフローでのみ有効です。

構文

    ForEach -Parallel ($<item> in $<collection>)
    {
        [<Activity1>]
        [<Activity2>]
        ...
    }

詳細説明

Windows PowerShell の ForEach ステートメントと同様に、コレクションが含まれている変数 ($<コレクション>) は ForEach -Parallel ステートメントよりも前に定義する必要がありますが、現在の項目を表す変数 ($<項目>) は ForEach -Parallel ステートメント内に定義する必要があります。

ForEach -Parallel コンストラクトは、ForEach キーワードおよび Parallel キーワードとは異なります。ForEach キーワードは、コレクション内の項目を順に処理します。Parallel キーワードは、スクリプト ブロック内のコマンドを並列に実行します。ForEach -Parallel スクリプト ブロックで 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