Wait-Job
Potlačí příkazový řádek, dokud nebude dokončena jedna nebo všechny úlohy prostředí Windows PowerShell na pozadí spuštěné v relaci.
Syntaxe
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Id] <Int32[]>
[<CommonParameters>]
Wait-Job
[-Job] <Job[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Name] <String[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-InstanceId] <Guid[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-State] <JobState>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Filter] <Hashtable>
[<CommonParameters>]
Description
Rutina Wait-Job čeká na dokončení úloh prostředí Windows PowerShell na pozadí, než zobrazí příkazový řádek. Můžete počkat na dokončení jakékoli úlohy na pozadí nebo až do dokončení všech úloh na pozadí a můžete nastavit maximální dobu čekání na úlohu.
Po dokončení příkazů v úloze wait-job zobrazí příkazový řádek a vrátí objekt úlohy, abyste ho mohli převést na jiný příkaz.
Rutinu Wait-Job můžete použít k čekání na úlohy na pozadí, jako jsou úlohy spuštěné pomocí rutiny Start-Job nebo parametru AsJob rutiny Invoke-Command. Další informace o úlohách prostředí Windows PowerShell na pozadí 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 povolit wait-job čekat na úlohy určitého typu, naimportujte modul, který podporuje vlastní typ úlohy, do relace před spuštěním rutiny Get-Job, a to buď pomocí rutiny Import-Module, nebo pomocí nebo získání rutiny v 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
PS C:\> Get-Job | Wait-Job
Tento příkaz čeká na dokončení všech úloh na pozadí 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
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
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
Tento příklad používá
První příkaz vytvoří relaci prostředí Windows PowerShell (PSSession) na každém ze tří vzdálených počítačů a uloží je do proměnné $s.
Druhý příkaz používá Invoke-Command ke spuštění spouštěcí úlohy v každé ze tří relací 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) objektů úlohy do 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 dokončí první úloha na pozadí
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}
Tento příklad používá parametr AnyWait-Job k určení, kdy se dokončí první z mnoha úloh na pozadí spuštěných v aktuální relaci. Ukazuje také, jak pomocí rutiny Wait-Job čekat na dokončení vzdálených úloh.
První příkaz vytvoří
Druhý příkaz uloží Get-EventLog řetězec příkazu v uvozovkách v proměnné $c.
Třetí příkaz používá Invoke-Command rutinu ke spuštění spuštění v každé relaci v $s.
Příkaz spouštěcí úlohy
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 je zaveden v prostředí Windows PowerShell 3.0.
Další informace o modifikátoru oboru pomocí
Čtvrtý příkaz používá Invoke-Command ke spuštění příkazu Wait-Job v relacích. Pomocí parametru Any čeká na dokončení první úlohy na vzdálených počítačích.
Příklad 4: Nastavení doby čekání na úlohy na vzdálených počítačích
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}
Tento příklad ukazuje, jak pomocí parametru TimeoutWait-Job nastavit maximální dobu čekání na úlohy spuštěné na vzdálených počítačích.
První příkaz vytvoří
Druhý příkaz používá
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 výsledky příkazu uloží do proměnné $done.
V takovém případě se po 30 sekundách dokončil pouze příkaz na počítači Se serverem 02. wait-job ukončí čekání, zobrazí příkazový řádek a vrátí objekt, který představuje úlohu, která byla dokončena.
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.
PS C:\> Wait-Job -id 1,2,5 -Any
Tento příkaz identifikuje tři úlohy podle jejich ID a počká, dokud se některý z nich nedokončí. Po dokončení první úlohy se příkazový řádek vrátí.
Příklad 6: Počkejte na určité období a pak povolte pokračování úlohy na pozadí.
PS C:\> 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, příkazový řádek se přesto vrátí a úloha se bude dál spouštět na pozadí.
Příklad 7: Čekání na úlohu podle názvu
PS C:\> 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 v místním počítači spuštěné s Start-Job
PS C:\> $j = Start-Job -ScriptBlock {Get-ChildItem *.ps1| where {$_lastwritetime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
PS C:\> $j | Wait-Job
Tento příklad ukazuje, jak použít rutinu
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á spouštěcí úlohu ke spuštění úlohy na pozadí na 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 čekat, dokud se úloha nedokončí. 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
PS C:\> $s = New-PSSession Server01, Server02, Server03
PS C:\> $j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
PS C:\> $j | Wait-Job
Tento příklad ukazuje použití 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á
První příkaz vytvoří PSSession objekty na třech počítačích a uloží je do proměnné $s.
Druhý příkaz používá Invoke-Command ke spuštění Get-Process v každé ze tří relací v $s. Příkaz používá parametr AsJob ke spuštění příkazu asynchronně jako úlohu na pozadí. Příkaz vrátí objekt úlohy, stejně jako úlohy spuštěné pomocí spouštěcí úlohya objekt úlohy je uložen v proměnné $j.
Třetí příkaz používá operátor kanálu (|) k odeslání objektu úlohy v $j do rutiny 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
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
Tento příkaz čeká na úlohu s hodnotou ID 1.
Parametry
-Any
Označuje, že tato rutina zobrazí příkazový řádek a po dokončení jakékoli úlohy vrátí objekt úlohy. Ve výchozím nastavení wait-job čeká na dokončení všech zadaných úloh před zobrazením výzvy.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Filter
Určuje tabulku hodnot hash podmínek. Tato rutina č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 na pozadí, 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.
Typ: | Hashtable |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Force
Označuje, že tato rutina nadále čeká na úlohy 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ů:
- Hotový
- Neúspěšný
- Zastavený
- Pozastavený
- Nesouvislý
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Id
Určuje pole ID úloh, pro které tato rutina čeká.
ID je celé číslo, které jednoznačně identifikuje úlohu v aktuální relaci.
Je jednodušší zapamatovat a zadat než ID 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
.
Typ: | Int32[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-InstanceId
Určuje pole ID instancí úloh, pro které tato rutina čeká. Výchozí hodnota je 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.
Typ: | Guid[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Job
Určuje úlohy, pro které tato rutina čeká. Zadejte proměnnou obsahující objekty úlohy nebo příkaz, který získá objekty úlohy. Pomocí operátoru kanálu můžete také odesílat objekty úloh do rutiny Wait-Job. Ve výchozím nastavení wait-job čeká na všechny úlohy vytvořené v aktuální relaci.
Typ: | Job[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Name
Určuje popisné názvy úloh, pro které tato rutina čeká.
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-State
Určuje stav úlohy. Tato rutina čeká pouze na úlohy v zadaném stavu. Přijatelné hodnoty pro tento parametr jsou:
- NotStarted
- Tekoucí
- Hotový
- Neúspěšný
- Zastavený
- Blokovaný
- Pozastavený
- Nesouvislý
- Pozastavení
- Zastavení
Další informace o stavech úloh naleznete v tématu JobState – výčet v knihovně MSDN.
Typ: | JobState |
Přípustné hodnoty: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Timeout
Určuje maximální dobu čekání pro každou úlohu na pozadí v sekundách. Výchozí hodnota -1 označuje, že rutina počká, dokud se úloha nedokončí. Časování se spustí při odeslání příkazu Wait-Job, nikoli příkazu Spustit úlohu.
Pokud se tento čas překročí, čekání skončí a příkazový řádek se vrátí, i když je úloha stále spuštěná. Příkaz nezobrazí žádnou chybovou zprávu.
Typ: | Int32 |
Aliasy: | TimeoutSec |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
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í dokončené úlohy. Pokud čekání skončí, protože je překročena hodnota Parametr časového limitu, wait-job nevrací žádné objekty.
Poznámky
- Ve výchozím nastavení wait-job vrátí nebo ukončí čekání, když jsou úlohy v jednom z následujících stavů:
- Hotový
- Neúspěšný
- Zastavený
- Pozastavený
- Odpojeno do režimu direct Wait-Job pokračovat v čekání na pozastavené a odpojené úlohy, použijte parametr Vynucení.