簡短描述
描述 foreach -Parallel Windows PowerShell 工作流程中的語言建構。
LONG DESCRIPTION
關鍵詞 參數會針對指定集合中的每個項目執行腳本區塊中的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 參數會以平行方式在腳本區塊中執行命令。 您可以在文稿區塊中括住 foreach -Parallel 平行腳本區塊。
工作流程中的目標計算機,例如 PSComputerName 工作流程通用參數所指定的計算機,一律會平行處理。
您不需要為此目的指定 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}
}
}
}