Wait-Job
Megvárja, amíg a munkamenetben futó Egyik vagy az összes PowerShell-feladat megszűnik.
Syntax
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
A Wait-Job
parancsmag megvárja, amíg egy feladat befejező állapotban lesz a végrehajtás folytatása előtt.
A megszüntető állapotok a következők:
- Befejeződött
- Sikertelen
- Leállítva
- Felfüggesztve
- Leválasztva
Megvárhatja, amíg egy adott feladat, vagy az összes feladat befejező állapotban van. Beállíthatja a feladat maximális várakozási idejét is az Időtúllépés paraméterrel, vagy a Kényszerítés paraméterrel megvárhat egy feladatot az állapotokban vagy Disconnected
állapotokbanSuspended
.
Ha a feladat parancsai befejeződnek, egy feladatobjektumot ad vissza, Wait-Job
és folytatja a végrehajtást.
A parancsmaggal megvárhatja a Wait-Job
parancsmag parancsmagjával vagy AsJob paraméterével Invoke-Command
elindított Start-Job
feladatokat. További információ a feladatokról: about_Jobs.
A Windows PowerShell 3.0-tól kezdve a Wait-Job
parancsmag egyéni feladattípusokra, például munkafolyamat-feladatokra és ütemezett feladatok példányára is vár. Egy adott típusú feladat várakozásának engedélyezéséhez Wait-Job
importálja az egyéni feladattípust támogató modult a munkamenetbe a parancsmag futtatása Get-Job
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
Get-Job | Wait-Job
Ez a parancs megvárja, amíg a munkamenetben futó összes feladat befejeződik.
2. példa: Várakozás a távoli számítógépeken elindított feladatokra a Start-Job használatával
$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
Ez a példa bemutatja, hogyan használhatja a Wait-Job
parancsmagot a távoli számítógépeken a parancsmag használatával Start-Job
indított feladatokkal. Mind Start-Job
a Wait-Job
parancsokat a rendszer a parancsmag használatával küldi el a Invoke-Command
távoli számítógépre.
Ez a példa azt határozza Wait-Job
meg, hogy egy Get-Date
feladatként futó 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 Invoke-Command
a három munkamenet $s
mindegyikében futStart-Job
.
Az összes feladat neve Dátum1.
A harmadik parancs a futtatáshoz Wait-Job
használInvoke-Command
. Ez a parancs megvárja, amíg az Date1
egyes számítógépek feladatai befejeződnek. A feladatobjektumok eredményként kapott gyűjteményét (tömbét) a $done
változóban tárolja.
A negyedik parancs a változóban lévő $done
feladatobjektumok tömbjének Count 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ő feladat
$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}
Ez a példa az Any paraméterrel Wait-Job
határozza meg, hogy az aktuális munkamenetben futó számos feladat közül az első mikor végződik. Azt is bemutatja, hogyan várhatja meg a távoli feladatok befejezését a Wait-Job
parancsmaggal.
Az első parancs létrehoz egy PSSession-t a 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 zárva, így meggyőződhet arról, hogy a parancs a New-PSSession
parancs előtt fut.
A második parancs idézőjelekben tárol egy parancssztringet Get-EventLog
a $c
változóban.
A harmadik parancs parancsmaggal Invoke-Command
futtatja Start-Job
a parancsmagot az egyes munkamenetekben a következőben $s
: .
A Start-Job
parancs elindít egy feladatot, amely a Get-EventLog
változóban futtatja a $c
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 használata módosító a Windows PowerShell 3.0-ban van bevezetve. A Hatókör-módosító használatáról további információt a about_Remote_Variables című témakörben talál.
A negyedik parancs egy Wait-Job
parancs futtatását használja Invoke-Command
a munkamenetekben. Az Any paraméter használatával várja meg, amíg a távoli számítógépeken az első feladat leáll.
4. példa: Várakozási idő beállítása távoli számítógépeken lévő feladatokhoz
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>
Ez a példa bemutatja, hogyan állíthatja be a távoli számítógépeken futó feladatok maximális várakozási Wait-Job
idejét az Időtúllépés paraméterrel.
Az első parancs létrehoz egy PSSession-t mindhárom távoli számítógépen (Server01, Server02 és Server03), majd tárolja a PSSession objektumokat a $s
változóban.
A második parancs a psSession objektumok mindegyikében való futtatására Start-Job
használja Invoke-Command
a következőben$s
: . Az eredményként kapott feladatobjektumokat a $jobs
változóban tárolja.
A harmadik parancs az egyes munkamenetekben való futtatásra Wait-Job
használja Invoke-Command
a következőben$s
: . A Wait-Job
parancs meghatározza, hogy az összes parancs 30 másodpercen belül befejeződött-e. Az 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. Wait-Job
befejezi a várakozást, visszaadja a befejezett feladatot jelképező objektumot, és megjeleníti a parancssort.
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
Wait-Job -id 1,2,5 -Any
Ez a parancs azonosít három feladatot az azonosítójuk alapján, és megvárja, amíg bármelyikük megszűnik. A végrehajtás az első feladat befejeződésekor folytatódik.
6. példa: Várjon egy ideig, majd engedélyezze a feladat folytatását a háttérben
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 végrehajtás folytatódik, és a feladat továbbra is a háttérben fut.
7. példa: Várjon egy feladatra név szerint
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 start-Job szolgáltatással elindított helyi számítógépen lévő feladatokra
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1| Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
Ez a példa bemutatja, hogyan használhatja a Wait-Job
parancsmagot a helyi számítógépen elindított feladatok használatával Start-Job
.
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 egy feladat helyi számítógépen való indítására használja Start-Job
. A feladat egy Get-ChildItem
parancsot futtat, amely lekéri az összes olyan fájlt, amely .ps1 fájlnévkiterjesztéssel rendelkezik, amelyet az elmúlt héten adtak hozzá vagy frissítettek.
A harmadik parancs arra használja Wait-Job
, hogy megvárja, amíg a feladat befejező állapotban van. 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 indított feladatokra az Invoke-Command paranccsal
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
Ez a példa bemutatja, hogyan használható Wait-Job
a távoli számítógépeken elindított feladatokhoz a következő AsJob paraméter Invoke-Command
használatával: . Az AsJob haszná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 annak meghatározására szolgál Wait-Job
, hogy a Get-Process
munkamenetekben három távoli számítógépen futó parancs végződő állapotban van-e.
Az első parancs pssession objektumokat hoz létre három számítógépen, és tárolja őket a $s
változóban.
A második parancs Invoke-Command
a három munkamenet $s
mindegyikében futGet-Process
.
A parancs az AsJob paraméterrel aszinkron módon futtatja a parancsot feladatként. A parancs egy feladatobjektumot ad vissza, ugyanúgy, mint a használt feladatok Start-Job
, és a feladatobjektum a $j
változóban van tárolva.
A harmadik parancs egy folyamatkezelővel (|
) küldi be $j
a feladatobjektumot a Wait-Job
parancsmagba. Invoke-Command
Ebben az esetben nincs szükség parancsra, mert a feladat a helyi számítógépen található.
10. példa: Várakozás azonosítóval rendelkező feladatra
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
Ez a parancs az 1 azonosítójú feladatra vár.
Paraméterek
-Any
Azt jelzi, hogy ez a parancsmag visszaadja a feladatobjektumot, és a feladat befejeződésekor folytatja a végrehajtást. Alapértelmezés szerint megvárja, Wait-Job
amíg az összes megadott feladat befejeződik, mielőtt megjelenik a kérés.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 feladatokon, például a Start-Job
parancsmag használatával 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.
Típus: | Hashtable |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | 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 Wait-Job
visszaadja vagy befejezi a várakozást, ha a feladatok az alábbi állapotok valamelyikében vannak:
- Befejeződött
- Sikertelen
- Leállítva
- Felfüggesztve
- Leválasztva
Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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. A feladat azonosítójának megkereséséhez írja be a következőt Get-Job
:
Típus: | Int32[] |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-InstanceId
A parancsmag által várt feladatok példányazonosítóinak tömbje. 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 Get-Job
a következőt: .
Típus: | Guid[] |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-Job
Megadja azokat a feladatokat, amelyekre a parancsmag várakozik. 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
parancsmagnak. Alapértelmezés szerint Wait-Job
az aktuális munkamenetben létrehozott összes feladatra vár.
Típus: | Job[] |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-Name
Azoknak a feladatoknak a rövid nevét adja meg, amelyekre a parancsmag várakozik.
Típus: | String[] |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-State
Feladat állapotát adja meg. Ez a parancsmag csak a megadott állapotú feladatokra vár. A paraméter elfogadható értékei a következők:
- NotStarted
- Futó
- Befejeződött
- Sikertelen
- Leállítva
- Blokkolva
- Felfüggesztve
- Leválasztva
- Felfüggesztés
- Leállás
A feladatállapotokról további információt a JobState Enumerálás című témakörben talál.
Típus: | JobState |
Elfogadott értékek: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-Timeout
Az egyes feladatok 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
parancsnál.
Ha túllépi ezt az időt, a várakozás véget ér, és a végrehajtás folytatódik, még akkor is, ha a feladat még fut. A parancs nem jelenít meg hibaüzenetet.
Típus: | Int32 |
Aliasok: | TimeoutSec |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
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 befejező állapotban lévő feladatokat jelölik. Ha a várakozás az időtúllépési paraméter túllépése miatt véget ér, Wait-Job
nem ad vissza objektumokat.
Jegyzetek
A PowerShell a következő aliasokat Wait-Job
tartalmazza:
- Minden platform:
wjb
Alapértelmezés szerint Wait-Job
visszaadja vagy befejezi a várakozást, ha a feladatok az alábbi állapotok valamelyikében vannak:
- Befejeződött
- Sikertelen
- Leállítva
- Felfüggesztve
- Leválasztva
Ha közvetlenül Wait-Job
szeretné folytatni a felfüggesztett és a leválasztott feladatok várakozását, használja a Force paramétert.