Dela via


Bakgrundsjobb

Cmdletar kan utföra sin åtgärd internt eller som ett Windows PowerShell-bakgrundsjobb. När en cmdlet körs som ett bakgrundsjobb utförs arbetet asynkront i sin egen tråd, separat från pipelinetråden som cmdleten använder. När en cmdlet körs som ett bakgrundsjobb, returnerar kommandotolken omedelbart, även om jobbet tar längre tid att slutföra, och användaren kan fortsätta utan avbrott medan jobbet körs.

Bakgrundsjobb, underordnade jobb och jobblagringsplatsen

Jobbobjektet som returneras av de cmdletar som stöder bakgrundsjobb definierar jobbet. (Cmdleten Start-Job returnerar också ett jobbobjekt.) Namnet på jobbet, en identifierare som används för att ange jobbet, tillståndsinformationen och de underordnade jobben ingår i den här definitionen. Jobbet utför inte något av arbetet. Varje bakgrundsjobb har minst ett underordnat jobb eftersom det underordnade jobbet utför det faktiska arbetet. När du kör en cmdlet så att arbetet utförs som ett bakgrundsjobb måste cmdleten lägga till jobbet och de underordnade jobben till en gemensam lagringsplats, som kallas jobblagringsplats.

Mer information om hur bakgrundsjobb hanteras på kommandoraden finns i följande:

Skriva en cmdlet som körs som ett bakgrundsjobb

Om du vill skriva en cmdlet som kan köras som ett bakgrundsjobb måste du utföra följande uppgifter:

  • Definiera en asJob växelparameter så att användaren kan bestämma om cmdleten ska köras som ett bakgrundsjobb.

  • Skapa ett objekt som härleds från klassen System.Management.Automation.Job. Det här objektet kan vara ett anpassat jobbobjekt eller ett jobbobjekt som tillhandahålls av Windows PowerShell, till exempel ett System.Management.Automation.PSEventJob-objekt.

  • I en postbearbetningsmetod lägger du till en if-instruktion som identifierar om cmdleten ska köras som ett bakgrundsjobb.

  • Implementera jobbklassen för anpassade jobbobjekt.

  • Returnera lämpliga objekt, beroende på om cmdleten körs som ett bakgrundsjobb.

Ett kodexempel finns i Så här stöder du jobb.

Följande API:er tillhandahålls av Windows PowerShell för att hantera bakgrundsjobb.

System.Management.Automation.Job Härleder anpassade jobbobjekt. Det här är en abstrakt klass.

System.Management.Automation.JobRepository Manages och innehåller information om aktuella aktiva bakgrundsjobb.

System.Management.Automation.JobState Definierar tillståndet för bakgrundsjobbet. Tillstånden inkluderar Started, Running och Stopped.

System.Management.Automation.JobStateInfo Ger information om tillståndet för ett bakgrundsjobb och, om den senaste tillståndsändringen orsakades av ett fel, orsaken till att jobbet angav sitt aktuella tillstånd.

System.Management.Automation.JobStateEventArgs Tillhandahåller argumenten för en händelse som genereras när ett bakgrundsjobb ändras.

Windows PowerShell-jobb-cmdletar

Följande cmdletar tillhandahålls av Windows PowerShell för att hantera bakgrundsjobb.

Hämta-jobb

Hämtar Windows PowerShell-bakgrundsjobb som körs i den aktuella sessionen.

Ta emot jobb

Hämtar resultatet av Windows PowerShell-bakgrundsjobben i den aktuella sessionen.

Remove-Job

Tar bort ett Windows PowerShell-bakgrundsjobb.

startjobb

Startar ett Windows PowerShell-bakgrundsjobb.

Stoppa Jobb

Stoppar ett Windows PowerShell-bakgrundsjobb.

Vänta-Jobb

Undertrycker kommandotolken tills ett eller alla Windows PowerShell-bakgrundsjobb som körs i sessionen har slutförts.

Se även

Skriva en Windows PowerShell-cmdlet