about_Foreach-Parallel
適用於: Windows PowerShell 3.0
主題
about_ForEach-Parallel
簡短描述
描述 Windows PowerShell® 工作流程中的 ForEach -Parallel 語言建構。
詳細描述
ForEach 關鍵字的 Parallel 參數會針對指定集合中的每個項目,在 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 關鍵字會在指令碼區塊以平行方式執行命令。您可以將 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
}
}
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