Bakgrundsjobb

Cmdlets kan utföra sin åtgärd internt eller som en Windows PowerShell bakgrundsjobb. När en cmdlet körs som ett bakgrundsjobb utförs arbetet asynkront i en egen tråd separat från pipelinetråden som cmdleten använder. Från användarens perspektiv, 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 jobbdatabasen

Jobbobjektet som returneras av cmdletarna 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 underjobb 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 för jobbdatabasen.

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äxlingsparameter 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 if en -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 Hanterar och tillhandahåller information om de aktuella aktiva bakgrundsjobben.

System.Management.Automation.Jobstate Definierar tillståndet för bakgrundsjobbet. Tillstånden är Startad, Körs och Stoppad.

System.Management.Automation.Jobstateinfo Innehåller information om tillståndet för ett bakgrundsjobb och, om den senaste tillståndsändringen orsakades av ett fel, orsaken till att jobbet överdes i sitt aktuella tillstånd.

System.Management.Automation.Jobstateeventargs Tillhandahåller argumenten för en händelse som utlöses när ett bakgrundsjobb ändrar status.

Windows PowerShell Jobb-cmdlets

Följande cmdlet:ar 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 de Windows PowerShell bakgrundsjobben i den aktuella sessionen.

Ta bort jobb

Tar bort Windows PowerShell bakgrundsjobb.

Starta jobb

Startar ett Windows PowerShell bakgrundsjobb.

Stoppa jobb

Stoppar en Windows PowerShell bakgrundsjobb.

Wait-Job

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

Se även

Skriva en Windows PowerShell-cmdlet