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