Aracılığıyla paylaş


about_Foreach-Parallel

KıSA AÇıKLAMA

ForEach -Parallel Windows PowerShell İş Akışı'ndaki dil yapısını açıklar.

UZUN AÇıKLAMA

Anahtar sözcüğün ForEach Parallel parametresi, komutları belirtilen koleksiyondaki her öğe için bir ForEach betik bloğunda bir kez çalıştırır.

Bir disk koleksiyonundaki disk gibi koleksiyondaki öğeler paralel olarak işlenir. Betik bloğundaki komutlar koleksiyondaki her öğede sırayla çalışır.

ForEach -Parallel yalnızca Windows PowerShell İş Akışında geçerlidir.

SÖZ DİZİMİ

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

AYRINTILI AÇIKLAMA

Windows PowerShell'deki ForEach deyiminde olduğu gibi, koleksiyon $<collection> içeren değişkenin deyiminden ForEach -Parallel önce tanımlanması gerekir, ancak geçerli öğeyi $<item> temsil eden değişken deyiminde ForEach -Parallel tanımlanır.

YapısıForEach -Parallel, anahtar sözcüğünden ForEach ve Parallel parametresinden farklıdır. ForEach anahtar sözcüğü koleksiyondaki öğeleri sırayla işler. Parallel parametresi komutları paralel olarak bir betik bloğunda çalıştırır. Paralel betik bloğunu bir betik bloğuna ForEach -Parallel kapatabilirsiniz.

PsComputerName iş akışı ortak parametresi tarafından belirtilenler gibi bir iş akışındaki hedef bilgisayarlar her zaman paralel olarak işlenir. Bu amaç için anahtar sözcüğü belirtmeniz ForEach -Parallel gerekmez.

ÖRNEKLER

Aşağıdaki iş akışı, etkinliğin aldığı diskleri Get-Disk işleyen bir ForEach -Parallel deyim içerir. Betik bloğundaki ForEach -Parallel komutlar sıralı olarak çalışır, ancak disklerde paralel olarak çalışır. Diskler eşzamanlı olarak ve herhangi bir sırada işlenebilir.

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

İş akışının Get-Process bu sürümünde ve Get-Service komutları paralel olarak çalıştırılır. İş akışı işlevi, komutların sıralı olarak çalıştırıldığı ama disklerde paralel olarak çalıştırıldığı döngüye devam ForEach -Parallel eder. Paralel komutlar ve ForEach -Parallel döngü eşzamanlı olarak çalışır.

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

Ayrıca bkz: