Wait-Job
Čeká, dokud jedna nebo všechny úlohy PowerShellu spuštěné v relaci nejsou v ukončovacím stavu.
Syntax
SessionIdParameterSet (Výchozí)
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
Rutina Wait-Job čeká na to, aby úloha byla v ukončovacím stavu, než bude pokračovat v provádění.
Ukončující stavy jsou:
- Dokončeno
- Neúspěšné
- Zastavený
- Pozastavený
- Nesouvislý
Můžete počkat na zadanou úlohu nebo všechny úlohy jsou v ukončovacím stavu. Můžete také nastavit maximální dobu čekání na úlohu pomocí parametru Časový limit nebo můžete použít parametr Vynucení k čekání na úlohu ve stavu Suspended nebo Disconnected.
Po dokončení příkazů v úloze Wait-Job vrátí objekt úlohy a pokračuje v provádění.
Pomocí rutiny Wait-Job můžete čekat na úlohy spuštěné pomocí rutiny Start-Job nebo parametru AsJob rutiny Invoke-Command. Další informace o úlohách najdete v tématu about_Jobs.
Počínaje Windows PowerShellem 3.0 rutina Wait-Job také čeká na vlastní typy úloh, jako jsou úlohy pracovního postupu a instance naplánovaných úloh. Pokud chcete umožnit, aby Wait-Job mohlo čekat na úlohy určitého typu, naimportujte modul, který podporuje tento vlastní typ úloh, do relace před spuštěním rutiny Get-Job. Můžete to provést buď pomocí rutiny Import-Module, nebo získáním rutiny z modulu. Informace o konkrétním vlastním typu úlohy najdete v dokumentaci funkce vlastního typu úlohy.
Příklady
Příklad 1: Čekání na všechny úlohy
Get-Job | Wait-Job
Tento příkaz čeká na dokončení všech úloh spuštěných v relaci.
Příklad 2: Čekání na úlohy spuštěné na vzdálených počítačích pomocí Start-Job
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
3
Tento příklad ukazuje, jak použít rutinu Wait-Job s úlohami spuštěnými na vzdálených počítačích pomocí rutiny Start-Job. Příkazy Start-Job i Wait-Job se odesílají do vzdáleného počítače pomocí rutiny Invoke-Command.
Tento příklad používá Wait-Job k určení, jestli je dokončen Get-Date příkaz spuštěný jako úloha na třech různých počítačích.
První příkaz vytvoří relaci Windows PowerShell (PSSession) na každém ze tří vzdálených počítačů a uloží ji do proměnné $s.
Druhý příkaz používá Invoke-Command ke spuštění Start-Job v každém ze tří sezení v $s.
Všechny úlohy mají název Date1.
Třetí příkaz používá Invoke-Command ke spuštění Wait-Job. Tento příkaz čeká na dokončení úloh Date1 v každém počítači. Uloží výslednou kolekci (pole) úlohy objekty v proměnné $done.
Čtvrtý příkaz používá vlastnost Count pole objektů úloh v proměnné $done k určení počtu dokončených úloh.
Příklad 3: Určení, kdy se první úloha dokončí
$s = New-PSSession -ComputerName (Get-Content -Path .\Machines.txt)
$c = 'Get-EventLog -LogName System | Where-Object {$PSItem.EntryType -eq "error" --and $PSItem.Source -eq "LSASRV"} | Out-File -FilePath Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
V tomto příkladu se používá parametr AnyWait-Job k určení, kdy je první z mnoha úloh spuštěných v aktuální relaci v ukončovacím stavu. Ukazuje také, jak pomocí rutiny Wait-Job čekat na dokončení vzdálených úloh.
První příkaz vytvoří PSSession na každém počítači uvedeném v souboru Machines.txt a uloží PSSession objekty v proměnné $s. Příkaz používá rutinu Get-Content k získání obsahu souboru. Příkaz Get-Content je uzavřený v závorkách, aby se zajistilo, že se spustí před příkazem New-PSSession.
Druhý příkaz uloží řetězec příkazu Get-EventLog v uvozovkách do proměnné $c.
Třetí příkaz používá rutinu Invoke-Command ke spuštění Start-Job v každém sezení v $s.
Příkaz Start-Job spustí úlohu, která spustí příkaz Get-EventLog v proměnné $c.
Příkaz používá modifikátor oboru Using k označení, že proměnná $c byla definována v místním počítači.
Použití modifikátoru oboru se zavádí v prostředí Windows PowerShell 3.0. Další informace o Použití modifikátoru oboru naleznete v tématu about_Remote_Variables.
Čtvrtý příkaz používá Invoke-Command ke spuštění příkazu Wait-Job v rámci relací. Použije parametr Any k vyčkání, dokud první úloha na vzdálených počítačích nedosáhne stavu ukončování.
Příklad 4: Nastavení doby čekání na úlohy na vzdálených počítačích
PS> $s = New-PSSession -ComputerName Server01, Server02, Server03
PS> $jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
PS> $done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
PS>
Tento příklad ukazuje, jak pomocí parametru Časový limitWait-Job nastavit maximální dobu čekání na úlohy spuštěné na vzdálených počítačích.
První příkaz vytvoří psSession na každém ze tří vzdálených počítačů (Server01, Server02 a Server03) a pak uloží PSSession objekty do $s proměnné.
Druhý příkaz používá Invoke-Command ke spuštění Start-Job v každém z PSSession objekty v $s. Uloží výsledné objekty úlohy do proměnné $jobs.
Třetí příkaz používá Invoke-Command ke spuštění Wait-Job v každé relaci v $s. Příkaz Wait-Job určuje, jestli se všechny příkazy dokončily do 30 sekund. Pomocí parametru Timeout s hodnotou 30 určí maximální dobu čekání a uloží výsledky příkazu do proměnné $done.
V takovém případě se po 30 sekundách dokončil pouze příkaz na počítači Server02.
Wait-Job ukončí čekání, vrátí objekt představující dokončenou úlohu a zobrazí příkazový řádek.
Proměnná $done obsahuje objekt úlohy, který představuje úlohu spuštěnou na serveru Server02.
Příklad 5: Počkejte na dokončení jedné z několika úloh.
Wait-Job -id 1,2,5 -Any
Tento příkaz identifikuje tři úlohy podle jejich ID a počká, dokud některý z nich není v ukončovacím stavu. Provádění pokračuje, jakmile se dokončí první úloha.
Příklad 6: Počkejte na určité období a pak povolte pokračování úlohy na pozadí.
Wait-Job -Name "DailyLog" -Timeout 120
Tento příkaz počká 120 sekund (dvě minuty) na dokončení úlohy DailyLog. Pokud se úloha nedokončí během následujících dvou minut, provádění pokračuje a úloha se bude dál spouštět na pozadí.
Příklad 7: Čekání na úlohu podle názvu
Wait-Job -Name "Job3"
Tento příkaz používá název úlohy k identifikaci úlohy, pro kterou se má čekat.
Příklad 8: Čekání na úlohy spuštěné na místním počítači s Start-Job
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1| Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
Tento příklad ukazuje, jak použít rutinu Wait-Job s úlohami spuštěnými v místním počítači pomocí Start-Job.
Tyto příkazy spustí úlohu, která získá soubory skriptů Windows PowerShellu, které byly přidány nebo aktualizovány v posledním týdnu.
První příkaz používá Start-Job ke spuštění úlohy v místním počítači. Úloha spustí příkaz Get-ChildItem, který získá všechny soubory s příponou názvu souboru .ps1, které byly přidány nebo aktualizovány v posledním týdnu.
Třetí příkaz používá Wait-Job k čekání na ukončení úlohy. Po dokončení úlohy příkaz zobrazí objekt úlohy, který obsahuje informace o úloze.
Příklad 9: Čekání na úlohy spuštěné na vzdálených počítačích pomocí Invoke-Command
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
Tento příklad ukazuje, jak používat Wait-Job s úlohami spuštěnými na vzdálených počítačích pomocí parametru AsJobInvoke-Command. Při použití asjobse úloha vytvoří v místním počítači a výsledky se automaticky vrátí do místního počítače, i když úloha běží na vzdálených počítačích.
Tento příklad používá Wait-Job k určení, jestli Get-Process příkaz spuštěný v relacích na třech vzdálených počítačích je v ukončovacím stavu.
První příkaz vytvoří psSession objekty na třech počítačích a uloží je do $s proměnné.
Druhý příkaz používá Invoke-Command ke spuštění Get-Process v každém ze tří sezení v $s.
Příkaz používá parametr AsJob ke spuštění příkazu asynchronně jako úlohu. Příkaz vrátí objekt úlohy stejně jako úlohy spuštěné pomocí Start-Joba objekt úlohy je uložen v proměnné $j.
Třetí příkaz používá operátor roury (|) k odeslání objektu úlohy v $j do cmdletu Wait-Job. V tomto případě není vyžadován příkaz Invoke-Command, protože úloha se nachází v místním počítači.
Příklad 10: Čekání na úlohu s ID
Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True localhost,Server01.. get-service
4 Job4 Completed True localhost dir | where
Wait-Job -Id 1
Tento příkaz čeká na úlohu s hodnotou ID 1.
Parametry
-Any
Označuje, že tato rutina vrátí objekt úlohy a pokračuje v provádění po dokončení jakékoli úlohy. Ve výchozím nastavení Wait-Job čeká na dokončení všech zadaných úloh před zobrazením výzvy.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Filter
Určuje tabulku hodnot hash podmínek. Tato cmdlet čeká na úlohy, které splňují všechny podmínky v tabulce hash. Zadejte tabulku hash, kde klíče jsou vlastnosti úlohy a hodnoty jsou hodnoty vlastností úlohy.
Tento parametr funguje jenom u vlastních typů úloh, jako jsou úlohy pracovního postupu a naplánované úlohy. Nefunguje na standardních úlohách, jako jsou úlohy vytvořené pomocí rutiny Start-Job. Informace o podpoře tohoto parametru najdete v tématu nápovědy pro typ úlohy.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Vlastnosti parametru
| Typ: | Hashtable |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
FilterParameterSet
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-Force
Indikuje, že tento cmdlet nadále čeká na úlohy, které jsou ve stavu Pozastaveno nebo Odpojeno. Ve výchozím nastavení Wait-Job vrátí nebo ukončí čekání, když jsou úlohy v jednom z následujících stavů:
- Dokončeno
- Neúspěšné
- Zastavený
- Pozastavený
- Nesouvislý
Tento parametr byl představen ve Windows PowerShellu 3.0.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Id
Určuje pole ID úloh, pro které tento cmdlet čeká.
ID je celé číslo, které jednoznačně identifikuje úlohu v aktuální relaci. **
Snadněji se zapamatuje a zadává než identifikátor instance, ale je jedinečný pouze v aktuální relaci. Můžete zadat jedno nebo více ID oddělených čárkami. Pokud chcete zjistit ID úlohy, zadejte Get-Job.
Vlastnosti parametru
| Typ: | Int32[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
SessionIdParameterSet
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-InstanceId
Určuje pole ID instancí úloh, na jejichž dokončení tato rutina čeká. Výchozí nastavení zahrnuje všechny úlohy.
ID instance je identifikátor GUID, který jednoznačně identifikuje úlohu v počítači. K vyhledání ID instance úlohy použijte Get-Job.
Vlastnosti parametru
| Typ: | Guid[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
InstanceIdParameterSet
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-Job
Určuje úlohy, pro které tento cmdlet čeká. Zadejte proměnnou obsahující objekty úlohy nebo příkaz, který získá objekty úlohy. Můžete také použít operátor kanálu k odesílání objektů úloh do Wait-Job cmdletu. Ve výchozím nastavení Wait-Job čeká na všechny úlohy vytvořené v aktuální relaci.
Vlastnosti parametru
| Typ: | Job[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
JobParameterSet
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-Name
Určuje uživatelsky přívětivé názvy úloh, pro které tento cmdlet čeká.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
NameParameterSet
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-State
Určuje stav úlohy. Tato rutina čeká pouze na úlohy v zadaném stavu. Přijatelné hodnoty pro tento parametr jsou:
- Nezahájeno
- Běhání
- Dokončeno
- Neúspěšné
- Zastavený
- Blokované
- Pozastavený
- Nesouvislý
- Pozastavení
- Zastavování
Další informace o stavech úloh viz JobState.
Vlastnosti parametru
| Typ: | JobState |
| Default value: | None |
| Přípustné hodnoty: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
StateParameterSet
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-Timeout
Určuje maximální dobu čekání pro každou úlohu v sekundách. Výchozí hodnota -1 označuje, že rutina počká, dokud se úloha nedokončí. Časování začíná odesláním příkazu Wait-Job, nikoli příkazu Start-Job.
Pokud je tento čas překročen, čekání skončí a provádění pokračuje, i když úloha stále běží. Příkaz nezobrazí žádnou chybovou zprávu.
Vlastnosti parametru
| Typ: | Int32 |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | TimeoutSec |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
System.Management.Automation.RemotingJob
Objekt úlohy můžete do této rutiny převést.
Výstupy
System.Management.Automation.PSRemotingJob
Tato rutina vrátí objekty úlohy, které představují úlohy v ukončovacím stavu. Pokud čekání skončí, protože je překročena hodnota parametru časového limitu, Wait-Job nevrátí žádné objekty.
Poznámky
PowerShell obsahuje následující aliasy pro Wait-Job:
- Všechny platformy:
wjb
Ve výchozím nastavení Wait-Job vrátí nebo ukončí čekání, když jsou úlohy v jednom z následujících stavů:
- Dokončeno
- Neúspěšné
- Zastavený
- Pozastavený
- Nesouvislý
Pokud chcete, aby Wait-Job pokračoval v čekání na pozastavené a odpojené úlohy, použijte parametr Force.