共用方式為


about_Foreach平行

簡短描述

描述 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-ProcessGet-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}
       }
   }
}

另請參閱