共用方式為


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