Megosztás a következőn keresztül:


Wait-Job

A parancssort mindaddig letiltja, amíg a munkamenetben futó Windows PowerShell-háttérfeladatok valamelyike vagy mindegyike be nem fejeződik.

Syntax

SessionIdParameterSet (Alapértelmezett)

Wait-Job
    [-Id] <Int32[]>
    [-Any]
    [-Timeout <Int32>]
    [-Force]
    [<CommonParameters>]

JobParameterSet

Wait-Job
    [-Job] <Job[]>
    [-Any]
    [-Timeout <Int32>]
    [-Force]
    [<CommonParameters>]

NameParameterSet

Wait-Job
    [-Name] <String[]>
    [-Any]
    [-Timeout <Int32>]
    [-Force]
    [<CommonParameters>]

InstanceIdParameterSet

Wait-Job
    [-InstanceId] <Guid[]>
    [-Any]
    [-Timeout <Int32>]
    [-Force]
    [<CommonParameters>]

StateParameterSet

Wait-Job
    [-State] <JobState>
    [-Any]
    [-Timeout <Int32>]
    [-Force]
    [<CommonParameters>]

FilterParameterSet

Wait-Job
    [-Filter] <Hashtable>
    [-Any]
    [-Timeout <Int32>]
    [-Force]
    [<CommonParameters>]

Description

A Wait-Job parancsmag megvárja, amíg a Windows PowerShell háttérfeladatai befejeződnek, mielőtt megjelenik a parancssor. Megvárhatja, amíg a háttérfeladatok befejeződnek, vagy amíg az összes háttérfeladat befejeződik, és megadhatja a feladat maximális várakozási idejét.

Ha a feladat parancsai befejeződnek, Wait-Job megjeleníti a parancssort, és visszaad egy feladatobjektumot, hogy egy másik parancsra irányíthassa.

A Wait-Job parancsmaggal megvárhatja a háttérfeladatokat, például azokat, amelyek a Start-Job parancsmaggal vagy a Invoke-Command parancsmag AsJob paraméterével kezdődtek. További információ a Windows PowerShell háttérfeladatairól: about_Jobs.

A Windows PowerShell 3.0-tól kezdve a Wait-Job parancsmag az egyéni feladattípusokra, például munkafolyamat-feladatokra és ütemezett feladatok példányára is vár. Ha engedélyezni szeretné, hogy Wait-Job várjon egy adott típusú feladatra, importálja az egyéni feladattípust támogató modult a munkamenetbe a Get-Job parancsmag futtatása előtt, akár a Import-Module parancsmag használatával, akár a modulban lévő parancsmag használatával vagy lekérésével. Egy adott egyéni feladattípussal kapcsolatos információkért tekintse meg az egyéni feladattípus-funkció dokumentációját.

Példák

1. példa: Várakozás az összes feladatra

PS C:\> Get-Job | Wait-Job

Ez a parancs megvárja, amíg a munkamenetben futó összes háttérfeladat befejeződik.

2. példa: Várakozás a távoli számítógépeken indított munkákra Start-Job használatával

PS C:\> $s = New-PSSession Server01, Server02, Server03
PS C:\> Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
PS C:\> $done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
PS C:\> $done.Count
3

Ez a példa bemutatja, hogyan használhatja a Wait-Job parancsmagot a távoli számítógépeken elindított feladatokhoz a Start-Job parancsmag használatával. A rendszer Start-Job és Wait-Job parancsokat is elküldi a távoli számítógépre a Meghívási parancs parancsmag használatával.

Ez a példa a Wait-Job használatával állapítja meg, hogy egy háttérfeladatként futó Get-Date parancs három különböző számítógépen befejeződött-e.

Az első parancs létrehoz egy Windows PowerShell-munkamenetet (PSSession) a három távoli számítógépen, és tárolja őket a $s változóban.

A második parancs Meghívási parancs használatával futtatja Start-Job a $s mindhárom munkamenetében. Az összes feladat neve Dátum1.

A harmadik parancs Invoke-Command használatával futtatja Wait-Job. Ez a parancs megvárja, amíg minden számítógépen befejeződnek a Date1 feladatok. A feladatobjektumok eredményként kapott gyűjteményét (tömbét) a $done változóban tárolja.

A negyedik parancs a $done változóban lévő feladatobjektumok tömbjének Darabszám tulajdonságával határozza meg, hogy hány feladat fejeződött be.

3. példa: Annak meghatározása, hogy mikor fejeződik be az első háttérfeladat

PS C:\> $s = New-PSSession (Get-Content Machines.txt)
PS C:\> $c = 'Get-EventLog -LogName System | where {$_.EntryType -eq "error" --and $_.Source -eq "LSASRV"} | Out-File Errors.txt'
PS C:\> Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
PS C:\> Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}

Ez a példa a Wait-Job paraméterével határozza meg, hogy mikor fejeződik be az aktuális munkamenetben futó számos háttérfeladat közül az első. Azt is bemutatja, hogyan használhatja a Wait-Job parancsmagot a távoli feladatok befejezésére való várakozáshoz.

Az első parancs létrehoz egy PSSession az Machines.txt fájlban felsorolt számítógépeken, és a PSSession objektumokat a $s változóban tárolja. A parancs a Get-Content parancsmaggal szerzi be a fájl tartalmát. A Get-Content parancs zárójelek közé van véve, hogy a New-PSSession parancs előtt fusson.

A második parancs egy Get-EventLog parancssztringet tárol idézőjelekben a $c változóban.

A harmadik parancs Invoke-Command parancsmaggal futtatja Start-Job a $s egyes munkameneteiben. A Start-Job parancs elindít egy háttérfeladatot, amely a $c változóban futtatja a Get-EventLog parancsot.

A parancs a hatókör-módosító használatával jelzi, hogy a $c változó a helyi számítógépen lett definiálva. A hatókör-módosítót a Windows PowerShell 3.0-ban vezették be. A hatókör-módosító használatával kapcsolatos további információkért lásd: about_Remote_Variables (https://go.microsoft.com/fwlink/?LinkID=252653).

A negyedik parancs a Invoke-Command használatával futtat egy Wait-Job parancsot a munkamenetekben. A Bármely paramétert használja, hogy megvárja a távoli számítógépek első feladatának befejezését.

4. példa: Várakozási idő beállítása távoli számítógépeken lévő feladatokhoz

PS C:\> $s = New-PSSession Server01, Server02, Server03
PS C:\> $jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
PS C:\> $done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}

Ez a példa bemutatja, hogyan használható a Várakozási feladatIdőtúllépés paramétere a távoli számítógépeken futó feladatok maximális várakozási idejének beállításához.

Az első parancs létrehoz egy PSSession mindhárom távoli számítógépen (Server01, Server02 és Server03), majd a PSSession objektumokat a $s változóban tárolja.

A második parancs Meghívási parancs használatával futtatja Indítási feladat a $s PSSession objektumaiban. Az eredményként kapott feladatobjektumokat a $jobs változóban tárolja.

A harmadik parancs Meghívási parancs használatával futtatja Wait-Job a $s egyes munkameneteiben. A Wait-Job parancs határozza meg, hogy az összes parancs 30 másodpercen belül befejeződött-e. A Időtúllépés paramétert használja 30 értékkel a maximális várakozási idő meghatározásához, majd a parancs eredményeit a $done változóban tárolja.

Ebben az esetben 30 másodperc után csak a Server02 számítógépen lévő parancs fejeződött be. Várakozási feladat befejezi a várakozást, megjeleníti a parancssort, és visszaadja a befejezett feladatot képviselő objektumot.

A $done változó egy feladatobjektumot tartalmaz, amely a Server02-en futtatott feladatot jelöli.

5. példa: Várjon, amíg több feladat valamelyike befejeződik

PS C:\> Wait-Job -id 1,2,5 -Any

Ez a parancs azonosítja a három feladatot az azonosítójuk alapján, és megvárja, amíg bármelyikük befejeződik. A parancssor az első feladat befejeződésekor jelenik meg.

6. példa: Várjon egy ideig, majd engedélyezze a feladat folytatását a háttérben

PS C:\> Wait-Job -Name "DailyLog" -Timeout 120

Ez a parancs 120 másodpercet (két percet) vár a DailyLog-feladat befejezéséig. Ha a feladat nem fejeződik be a következő két percben, a parancssor mégis visszatér, és a feladat továbbra is a háttérben fut.

7. példa: Várjon egy feladatra név szerint

PS C:\> Wait-Job -Name "Job3"

Ez a parancs a feladat nevével azonosítja azt a feladatot, amelyre várnia kell.

8. példa: Várakozás a helyi számítógépen indított feladatok végrehajtására Start-Job-val

PS C:\> $j = Start-Job -ScriptBlock {Get-ChildItem *.ps1| where {$_lastwritetime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
PS C:\> $j | Wait-Job

Ez a példa bemutatja, hogyan használhatja a Wait-Job parancsmagot a helyi számítógépen elindított feladatokkal a Start-Jobhasználatával.

Ezek a parancsok elindítanak egy feladatot, amely lekéri az elmúlt héten hozzáadott vagy frissített Windows PowerShell-szkriptfájlokat.

Az első parancs Start-Job használatával indít el egy háttérfeladatot a helyi számítógépen. A feladat egy Get-ChildItem parancsot futtat, amely lekéri az összes olyan fájlt, amely az elmúlt héten hozzáadott vagy frissített .ps1 fájlnévkiterjesztéssel rendelkezik.

A harmadik parancs Wait-Job használatával várja meg a feladat befejezését. Amikor a feladat befejeződött, a parancs megjeleníti a feladatobjektumot, amely a feladatra vonatkozó információkat tartalmazza.

9. példa: Várakozás a távoli számítógépeken futó feladatokra a Invoke-Command segítségével

PS C:\> $s = New-PSSession Server01, Server02, Server03
PS C:\> $j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
PS C:\> $j | Wait-Job

Ez a példa bemutatja, hogyan használható Wait-Job távoli számítógépeken indított feladatokhoz a Meghívási parancsAsJob paraméterével. A AsJobhasználatakor a feladat a helyi számítógépen jön létre, és az eredmények automatikusan visszakerülnek a helyi számítógépre, annak ellenére, hogy a feladat a távoli számítógépeken fut.

Ez a példa Wait-Job használatával állapítja meg, hogy a három távoli számítógépen futó munkamenetekben futó Get-Process parancs befejeződött-e.

Az első parancs három számítógépen hoz létre PSSession objektumokat, és a $s változóban tárolja őket.

A második parancs Meghívási parancs használatával futtatja Get-Process a $s három munkamenetében. A parancs a AsJob paramétert használja a parancs aszinkron futtatásához háttérfeladatként. A parancs egy feladatobjektumot ad vissza, ugyanúgy, mint a Start-Job, és a feladatobjektum a $j változóban van tárolva.

A harmadik parancs egy folyamatkezelő (|) használatával küldi el a feladatobjektumot a $j a Wait-Job parancsmagba. Ebben az esetben nincs szükség meghívási parancsra parancsra, mert a feladat a helyi számítógépen található.

10. példa: Várakozás azonosítóval rendelkező feladatra

PS C:\> Get-Job

Id   Name     State      HasMoreData     Location             Command
--   ----     -----      -----------     --------             -------
1    Job1     Completed  True            localhost,Server01.. get-service
4    Job4     Completed  True            localhost            dir | where

PS C:\> Wait-Job -Id 1

Ez a parancs az 1-es azonosítójú feladatra vár.

Paraméterek

-Any

Azt jelzi, hogy ez a parancsmag megjeleníti a parancssort, és visszaadja a feladatobjektumot, amikor bármely feladat befejeződik. Alapértelmezés szerint Várakozási feladat megvárja, amíg az összes megadott feladat befejeződik, mielőtt megjelenik a kérés.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Filter

A feltételek kivonattábláját adja meg. Ez a parancsmag olyan feladatokra vár, amelyek megfelelnek a kivonattáblában szereplő összes feltételnek. Adjon meg egy kivonattáblát, amelyben a kulcsok feladattulajdonságok, az értékek pedig a feladattulajdonságok értékei.

Ez a paraméter csak egyéni feladattípusokon, például munkafolyamat-feladatokon és ütemezett feladatokon működik. Nem működik szabványos háttérfeladatokon, például a Start-Job parancsmaggal létrehozott feladatokon. A paraméter támogatásáról további információt a feladattípus súgótémakörében talál.

Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.

Paramétertulajdonságok

Típus:Hashtable
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

FilterParameterSet
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Force

Azt jelzi, hogy ez a parancsmag továbbra is várakozik a felfüggesztett vagy leválasztott állapotú feladatokra. Alapértelmezés szerint Várakozási feladat visszaadja vagy befejezi a várakozást, ha a feladatok az alábbi állapotok valamelyikében vannak:

  • Befejeződött
  • Sikertelen
  • Megállt
  • Felfüggesztett
  • Szétkapcsolva

Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Id

Azoknak a feladatoknak a azonosítóit adja meg, amelyekre a parancsmag várakozik.

Az azonosító egy egész szám, amely egyedileg azonosítja a feladatot az aktuális munkamenetben. Egyszerűbb megjegyezni és begépelni, mint a példányazonosítót, de csak az aktuális munkamenetben egyedi. Beírhat egy vagy több azonosítót vesszővel elválasztva. Egy feladat azonosítójának megkereséséhez írja be a Get-Job.

Paramétertulajdonságok

Típus:

Int32[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

SessionIdParameterSet
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-InstanceId

Meghatároz egy tömböt a feladatok példányazonosítóival, amelyekre ez a cmdlet vár. Az alapértelmezett beállítás az összes feladat.

A példányazonosító egy GUID, amely egyedileg azonosítja a feladatot a számítógépen. Egy feladat példányazonosítójának megkereséséhez használja a Feladat lekérése.

Paramétertulajdonságok

Típus:

Guid[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

InstanceIdParameterSet
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Job

Meghatározza azokat a feladatokat, amelyekre ez a parancsmag vár. Adjon meg egy változót, amely tartalmazza a feladatobjektumokat, vagy egy parancsot, amely lekéri a feladatobjektumokat. Folyamatkezelővel feladatobjektumokat is küldhet a Wait-Job parancsmagba. Alapértelmezés szerint Várakozási feladat az aktuális munkamenetben létrehozott összes feladatra vár.

Paramétertulajdonságok

Típus:

Job[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

JobParameterSet
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Name

A feladatok barátságos neveit adja meg, amelyekre a parancsmag várakozik.

Paramétertulajdonságok

Típus:

String[]

Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

NameParameterSet
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-State

Munka állapotát adja meg. Ez a parancsmag csak a megadott állapotú feladatokra vár. A paraméter elfogadható értékei a következők:

  • Még nem kezdődött el
  • Futás
  • Befejeződött
  • Sikertelen
  • Megállt
  • Letiltott
  • Felfüggesztett
  • Szétkapcsolva
  • Felfüggesztéséről
  • Megállás

További információ a feladatállapotokról: JobState Enumeration az MSDN-kódtárban.

Paramétertulajdonságok

Típus:JobState
Alapértelmezett érték:None
Elfogadott értékek:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

StateParameterSet
Position:0
Kötelező:True
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:True
Fennmaradó argumentumokból származó érték:False

-Timeout

Az egyes háttérfeladatok maximális várakozási idejét adja meg másodpercben. A -1 alapértelmezett érték azt jelzi, hogy a parancsmag megvárja, amíg a feladat befejeződik. Az időzítés a Wait-Job parancs elküldésekor kezdődik, nem a Start-Job parancs.

Ha túllépi ezt az időt, a várakozás véget ér, és a parancssor visszatér, még akkor is, ha a feladat még fut. A parancs nem jelenít meg hibaüzenetet.

Paramétertulajdonságok

Típus:Int32
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False
Aliasok:TimeoutSec

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

CommonParameters

Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.

Bevitelek

System.Management.Automation.RemotingJob

Egy feladatobjektumot erre a parancsmagra csövezhet.

Kimenetek

System.Management.Automation.PSRemotingJob

Ez a parancsmag olyan feladatobjektumokat ad vissza, amelyek a befejezett feladatokat jelölik. Ha a várakozás a időtúllépési paraméter túllépése miatt véget ér, Wait-Job nem ad vissza objektumokat.

Jegyzetek

  • Alapértelmezés szerint Várakozási feladat visszaadja vagy befejezi a várakozást, ha a feladatok az alábbi állapotok valamelyikében vannak:
  • Befejeződött
  • Sikertelen
  • Megállt
  • Felfüggesztett
  • Ha nem szeretné, hogy Várakozási feladat továbbra is várakozni szeretne a felfüggesztett és a leválasztott feladatokra, használja a Kényszerítse paramétert.