共用方式為


about_Foreach平行

簡短描述

描述 ForEach -Parallel Windows PowerShell 工作流程中的語言建構。

LONG DESCRIPTION

關鍵詞ForEach Parallel 參數會針對指定集合中的每個項目執行腳本區塊中的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}
       }
   }
}

另請參閱