Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
RÖVID LEÍRÁS
foreach -Parallel A Windows PowerShell-munkafolyamat nyelvi szerkezetét ismerteti.
HOSSZÚ LEÍRÁS
A kulcsszó párhuzamos paramétere foreach egy foreach szkriptblokkban futtatja a parancsokat egy adott gyűjtemény minden eleméhez egyszer.
A gyűjtemény elemei, például egy lemezgyűjtemény lemezei párhuzamosan lesznek feldolgozva. A szkriptblokk parancsai egymás után futnak a gyűjtemény minden elemén.
foreach -Parallel csak Windows PowerShell-munkafolyamatokban érvényes.
SZINTAXIS
foreach -Parallel ($<item> in $<collection>) {
[<Activity1>]
[<Activity2>]
...
}
RÉSZLETES LEÍRÁS
A Windows PowerShell foreach utasításához hasonlóan a gyűjtemény $<collection> tartalmazó változót a foreach -Parallel utasítás előtt kell definiálni, de az aktuális elemet $<item> képviselő változót a foreach -Parallel utasítás határozza meg.
A foreach -Parallel szerkezet eltér a foreach kulcsszótól és a Párhuzamos paramétertől. A foreach kulcsszó sorrendben dolgozza fel a gyűjtemény elemeit. A Párhuzamos paraméter parancsokat futtat párhuzamosan egy szkriptblokkban. A párhuzamos szkriptblokkokat egy szkriptblokkba foreach -Parallel is belefoglalhatja.
A munkafolyamat célszámítógépei, például a PSComputerName munkafolyamat közös paramétere által megadott célszámítógépek feldolgozása mindig párhuzamosan történik.
Ehhez nem kell megadnia a foreach -Parallel kulcsszót.
PÉLDÁK
Az alábbi munkafolyamat egy utasítást foreach -Parallel tartalmaz, amely feldolgozza a tevékenység által lekért lemezeket Get-Disk . A szkriptblokk parancsai foreach -Parallel egymás után futnak, de párhuzamosan futnak a lemezeken. Előfordulhat, hogy a lemezek feldolgozása egyidejűleg és bármilyen sorrendben történik.
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
}
}
A munkafolyamat ezen verziójában a parancsok és Get-Process a Get-Service parancsok párhuzamosan futnak. A munkafolyamat-függvény továbbra is azt a foreach -Parallel ciklust használja, amelyben a parancsok egymás után futnak, de párhuzamosan futnak a lemezeken. A párhuzamos parancsok és a foreach -Parallel hurok párhuzamosan futnak.
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}
}
}
}