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

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 $smindegyikében futStart-Job. Az összes feladat neve Dátum1.

A harmadik parancs a futtatáshoz Wait-Jobhaszná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-Commandhaszná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 $smindegyiké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-Joba 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 Windows PowerShell a következő aliasokat Wait-Jobtartalmazza:

  • 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.