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


Wait-Job

Megvárja, amíg a munkamenetben futó Egyik vagy az összes PowerShell-feladat megszűnik.

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 egy feladat befejező állapotba kerül a végrehajtás folytatása előtt. A megszüntető állapotok a következők:

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

Megvárhatja, amíg egy adott feladat, vagy az összes feladat befejező állapotban van. A feladatra a Időtúllépési paraméterrel is beállíthatja a maximális várakozási időt, vagy a Erőltet paramétert használhatja arra, hogy várjon arra, hogy a feladat egy Suspended vagy Disconnected állapotban legyen.

Amikor a feladat parancsai befejeződnek, Wait-Job egy feladatobjektumot ad vissza, és folytatja a végrehajtást.

A Wait-Job parancsmaggal megvárhatja a Start-Job parancsmaggal vagy a parancsmag Invoke-Command paraméterével megkezdett feladatokat. További információ a munkákró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. Ha engedélyezni szeretné, hogy Wait-Job egy adott típusú feladatra várjon, importálja az egyéni feladattípust támogató modult a munkamenetbe a Get-Job parancsmag futtatása előtt, vagy a Import-Module parancsmag használatával, vagy 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 indított munkákra 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 elindított feladatokhoz a Start-Job parancsmag használatával. A Start-Job és a Wait-Job parancsok is a távoli számítógépre kerülnek a Invoke-Command parancsmag használatával.

Ez a példa Wait-Job használatával állapítja meg, hogy egy feladatké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 Invoke-Command-t használ, hogy Start-Job-et futtasson a $shárom munkamenetében. Az összes feladat neve Dátum1.

A harmadik parancs Invoke-Commandfuttatásához Wait-Job használ. Ez a parancs megvárja az egyes számítógépek Date1 feladatainak befejezését. A .

A negyedik parancs a változóban lévő feladatobjektumok tömbjének $done 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 a Wait-Job paraméterét használja annak meghatározására, hogy az aktuális munkamenetben futó számos feladat közül az első mikor végződik. 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 zárva, hogy biztosan a New-PSSession parancs előtt fusson.

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

A harmadik parancs Invoke-Command parancsmaggal futtatja Start-Job az $segyes munkameneteiben. A Start-Job parancs elindít egy feladatot, amely a Get-EventLog változóban futtatja a $c parancsot.

A parancs a Using: 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 Using: hatókör-módosító a Windows PowerShell 3.0-ban van bevezetve. A hatókör-módosítóról további információt a Using:about_Remote_Variables talál.

A negyedik parancs a munkamenetekben Invoke-Command parancsot használ egy Wait-Job parancs futtatásához. A Any paraméter használatával várja meg, amíg az első feladat a távoli számítógépeken eléri a lezárási állapotot.

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 használható a Wait-Job 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 a Invoke-Command használatával futtatja a Start-Job az PSSession objektumaiban $s. Az eredményként kapott feladatobjektumokat a $jobs változóban tárolja.

A harmadik parancs a Invoke-Command használatával minden munkamenetben lefuttatja a Wait-Job-et a $s-ben. 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. 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 helyi számítógépen indított feladatok végrehajtására Start-Job-val

$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 feladatokhoz 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 a Start-Job használatával indít el egy feladatot 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 a Wait-Job használatával várja meg, amíg a feladat megszűnik. 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

$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álja a Wait-Job-ot a távoli számítógépeken elindított feladatoknál a Invoke-Command 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ál annak meghatározására, hogy egy Get-Process parancs, amely három távoli számítógépen futó munkamenetekben fut-e, leállási állapotban van-e.

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

A második parancs Invoke-Command-t használ, hogy Get-Process-et futtasson a $shárom munkamenetében. A parancs a AsJob paramétert használja a parancs aszinkron futtatásához feladatként. A parancs a Start-Jobhasználatával indított feladatokhoz hasonlóan egy feladatobjektumot ad vissza, és a feladatobjektum a $j változóban lesz 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 Invoke-Command 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-es 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 Wait-Job 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 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.

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 Wait-Job visszatér, vagy megszakítja a várakozást, amikor 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 Get-Job.

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 Wait-Job 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 a JobState Enumerationcímű szakaszban található.

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 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 pedig a Start-Job parancs elküldésekor.

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.

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 befejező állapotban lévő feladatokat jelölik. Ha a várakozás véget ér, mert túllépi az időtúllépési paraméter értékét, Wait-Job nem ad vissza objektumokat.

Jegyzetek

A PowerShell a következő aliasokat tartalmazza Wait-Job:

  • Minden platform:
    • wjb

Alapértelmezés szerint Wait-Job visszatér, vagy megszakítja a várakozást, amikor a feladatok az alábbi állapotok valamelyikében vannak:

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

Ha azt szeretné, hogy a Wait-Job továbbra is várjon a felfüggesztett és leválasztott feladatokra, használja a Kényszerített paramétert.