about_Foreach-Parallel

DESKRIPSI SINGKAT

ForEach -Parallel Menjelaskan konstruksi bahasa di Windows PowerShell Workflow.

DESKRIPSI PANJANG

Parameter Paralel kata ForEach kunci menjalankan perintah dalam ForEach blok skrip sekali untuk setiap item dalam koleksi yang ditentukan.

Item dalam koleksi, seperti disk dalam kumpulan disk, diproses secara paralel. Perintah dalam blok skrip berjalan secara berurutan pada setiap item dalam koleksi.

ForEach -Parallel hanya valid dalam Alur Kerja Windows PowerShell.

SINTAKS

ForEach -Parallel ($<item> in $<collection>)
{
    [<Activity1>]
    [<Activity2>]
    ...
}

DESKRIPSI TERPERINCI

Seperti pernyataan ForEach di Windows PowerShell, variabel yang berisi koleksi $<collection> harus ditentukan sebelum ForEach -Parallel pernyataan, tetapi variabel yang mewakili item $<item> saat ini didefinisikan dalam ForEach -Parallel pernyataan.

Konstruksi ForEach -Parallel berbeda dari ForEach kata kunci dan parameter Paralel . Kata ForEach kunci memproses item dalam koleksi secara berurutan. Parameter Paralel menjalankan perintah dalam blok skrip secara paralel. Anda dapat mengapit blok skrip Paralel di ForEach -Parallel blok skrip.

Komputer target dalam alur kerja, seperti yang ditentukan oleh parameter umum alur kerja PSComputerName , selalu diproses secara paralel. Anda tidak perlu menentukan ForEach -Parallel kata kunci untuk tujuan ini.

CONTOH

Alur kerja berikut berisi ForEach -Parallel pernyataan yang memproses disk yang didapatkan Get-Disk aktivitas. Perintah dalam ForEach -Parallel blok skrip berjalan secara berurutan, tetapi berjalan pada disk secara paralel. Disk mungkin diproses secara bersamaan dan dalam urutan apa pun.

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
    }
}

Dalam versi alur kerja ini, Get-Process perintah dan Get-Service dijalankan secara paralel. Fungsi alur kerja berlanjut ke perulangan ForEach -Parallel tempat perintah dijalankan secara berurutan, tetapi berjalan pada disk secara paralel. Perintah paralel dan ForEach -Parallel perulangan berjalan bersamaan.

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}
       }
   }
}

Lihat Juga