about_Foreach-Parallel
概要
Windows PowerShell ワークフローの ForEach -Parallel
言語コンストラクトについて説明します。
詳細説明
キーワード (keyword)の ForEach
Parallel パラメーターは、指定したコレクション内のForEach
項目ごとにスクリプト ブロック内のコマンドを 1 回実行します。
コレクション内の項目 (ディスクのコレクション内のディスクなど) は、並列で処理されます。 スクリプト ブロック内のコマンドは、コレクション内の各項目で順番に実行されます。
ForEach -Parallel
は、Windows PowerShell ワークフローでのみ有効です。
SYNTAX
ForEach -Parallel ($<item> in $<collection>)
{
[<Activity1>]
[<Activity2>]
...
}
詳細説明
Windows PowerShell の ForEach ステートメントと同様に、コレクション $<collection>
を含む変数はステートメントの前に ForEach -Parallel
定義する必要がありますが、現在の項目 $<item>
を表す変数はステートメントで ForEach -Parallel
定義されます。
コンストラクForEach -Parallel
トは、キーワード (keyword)および Parallel パラメーターとは異なりますForEach
。 キーワード (keyword)はForEach
、コレクション内の項目を順番に処理します。 Parallel パラメーターは、スクリプト ブロック内のコマンドを並列で実行します。 並列スクリプト ブロックは、スクリプト ブロックで ForEach -Parallel
囲むことができます。
ワークフロー内のターゲット コンピューター (PSComputerName ワークフロー共通パラメーターで指定されたものなど) は、常に並列処理されます。
この目的でキーワード (keyword)をForEach -Parallel
指定する必要はありません。
例
次のワークフローには、アクティビティが 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}
}
}
}
参照
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示