about_Foreach-Parallel
概要
ワークフロー内のForEach -Parallel言語コンストラクトWindows PowerShellします。
詳細説明
キーワード の Parallel パラメーターは、 ForEach 指定された ForEach コレクション内の項目ごとに 1 回、スクリプト ブロック内のコマンドを実行します。
コレクション内の項目 (ディスクのコレクション内のディスクなど) は並列処理されます。 スクリプト ブロック内のコマンドは、コレクション内の各項目で順番に実行されます。
ForEach -Parallelは、ワークフロー内でのみWindows PowerShellです。
SYNTAX
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
詳細説明
Windows PowerShell $<collection> ForEach -Parallel $<item> の ForEach ステートメントと同様に、コレクションを含む変数は ステートメントの前に定義する必要がありますが、現在の項目を表す変数は ステートメントで定義ForEach -Parallelされます。
コン ForEach -Parallel ストラクトは、 キーワードおよび ForEach Parallel パラメーター とは異 なります。 キーワード ForEach は、コレクション内の項目を順に処理します。 Parallel パラメーターは、スクリプト ブロック内のコマンドを並列で実行します。 Parallel スクリプト ブロックは、スクリプト ブロックで囲 ForEach -Parallel む場合があります。
PSComputerName ワークフロー共通パラメーターで指定されたコンピューターなど、ワークフロー内のターゲット コンピューターは常に並列処理されます。
この目的のために キーワードを指定 ForEach -Parallel する必要はない。
EXAMPLES
次のワークフローには、アクティビティが 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}
}
}
}
参照
フィードバック
フィードバックの送信と表示