about_Scheduled_Jobs

Kort beskrivning

Beskriver schemalagda jobb och förklarar hur du använder och hanterar schemalagda jobb i PowerShell och i Schemaläggaren.

Lång beskrivning

Schemalagda PowerShell-jobb är en användbar hybrid av PowerShell-bakgrundsjobb och Schemaläggaren aktiviteter.

Precis som Med PowerShell-bakgrundsjobb körs schemalagda jobb asynkront i bakgrunden. Instanser av schemalagda jobb som har körts kan hanteras med hjälp av jobb-cmdletarna, Start-Job till exempel , , och Get-Job Stop-Job Receive-Job .

Precis Schemaläggaren aktiviteter sparas schemalagda jobb till disk. Du kan visa och hantera jobben i Schemaläggaren, aktivera och inaktivera dem efter behov, köra dem eller använda dem som mallar, upprätta ett engångsschema eller återkommande scheman för att starta jobben eller ange villkor under vilka jobben startar.

Dessutom sparas resultatet av schemalagda jobbinstanser till disk i ett format som är enkelt att komma åt, vilket ger en logg med jobbutdata som körs. Schemalagda jobb har en anpassad uppsättning cmdlets för att hantera dem. Med cmdletarna kan du skapa, redigera, hantera, inaktivera och återaktivera schemalagda jobb, jobbutlösare och jobbalternativ.

Den här omfattande och flexibla uppsättningen verktyg gör schemalagda jobb till en viktig komponent i många professionella PowerShell IT-lösningar.

De schemalagda jobb-cmdletarna ingår i PSScheduledJob-modulen som installeras med PowerShell. Den här modulen introducerades i PowerShell 3.0 och fungerar i PowerShell 3.0 och senare versioner av PowerShell. Mer information om cmdletarna i PSScheduledJob-modulen finns i PSScheduledJob.

Mer information om PowerShell-bakgrundsjobb finns i about_Jobs.

Mer information om Schemaläggaren finns i Schemaläggaren.

Anteckning

Du kan visa och hantera schemalagda PowerShell-jobb i Schemaläggaren. PowerShell-jobb och schemalagda jobb-cmdlets fungerar bara på schemalagda jobb som skapas i PowerShell.

Snabbstart

Det här exemplet skapar ett schemalagt jobb som startar varje dag kl. 03:00 och kör Get-Process cmdleten . Jobbet startar även om datorn körs på batterier.

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options

Get-ScheduledJobCmdleten hämtar schemalagda jobb på den lokala datorn.

Get-ScheduledJob
Id         Name            Triggers        Command            Enabled
--         ----            --------        -------            -------
7          ProcessJob      {1}             Get-Process        True

Get-JobTrigger hämtar jobbutlösare för ProcessJob. Indataparametrarna anger det schemalagda jobbet, inte utlösaren, eftersom utlösare sparas i ett schemalagt jobb.

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

I det här exemplet används parametern ContinueIfGoingOnBattery för cmdleten för att ändra egenskapen Set-ScheduledJob StopIfGoingOnBatteries för ProcessJob till False.

Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries     : True
StopIfGoingOnBatteries : False
WakeToRun              : True
StartIfNotIdle         : True
StopIfGoingOffIdle     : False
RestartOnIdleResume    : False
IdleDuration           : 00:10:00
IdleTimeout            : 01:00:00
ShowInTaskScheduler    : True
RunElevated            : False
RunWithoutNetwork      : True
DoNotAllowDemandStart  : False
MultipleInstancePolicy : IgnoreNew
JobDefinition          : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Get-ScheduledJobCmdleten hämtar det schemalagda jobbet ProcessJob.

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

Get-JobCmdleten hämtar alla instanser av processjobbets schemalagda jobb som har körts hittills. Get-JobCmdleten hämtar bara schemalagda jobb när PSScheduledJob-modulen importeras till den aktuella sessionen.

Tips

Observera att du använder cmdletarna för schemalagda jobb för att hantera schemalagda jobb, men du använder jobb-cmdlets för att hantera instanser av schemalagda jobb.

Get-Job -Name ProcessJob
Id     Name        PSJobTypeName  State    HasMoreData   Location   Command
--     ----        ------------   -----    -----------   --------   -------
45     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
46     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
47     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
48     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
49     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
50     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
51     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process

Receive-JobCmdleten hämtar resultatet av den senaste instansen av det schemalagda jobbet ProcessJob (ID = 51).

Receive-Job -ID 51

Även om kommandot inte innehåller parametern Keep sparas jobbets resultat på disken tills du tar bort dem eller det Receive-Job maximala antalet resultat överskrids.

Jobbresultaten är inte längre tillgängliga i den här sessionen, men om du startar en ny session eller öppnar ett nytt PowerShell-fönster är jobbets resultat tillgängliga igen.

Följande kommando använder parametern DefinitionName för Start-Job cmdleten för att starta det schemalagda jobbet ProcessJob.

Jobb som startas med hjälp av Start-Job cmdleten är PowerShell-standardbakgrundsjobb, inte instanser av det schemalagda jobbet. Precis som alla bakgrundsjobb startar de här jobben omedelbart, de omfattas inte av jobbalternativ eller påverkas av jobbutlösare och deras utdata sparas inte i utdatakatalogen för den schemalagda jobbkatalogen.

Start-Job -DefinitionName ProcessJob

Unregister-ScheduledJobCmdleten tar bort det schemalagda jobbet ProcessJob och alla sparade resultat av dess jobbinstanser.

Unregister-ScheduledJob ProcessJob

Koncept för schemalagda jobb

Ett schemalagt jobb kör kommandon eller ett skript. Ett schemalagt jobb kan innehålla jobbutlösare som startar jobbet och jobbalternativ som anger villkor för att köra jobbet.

En jobbutlösare startar ett schemalagt jobb automatiskt. En jobbutlösare kan innehålla ett engångsschema eller ett återkommande schema eller ange en händelse, till exempel när en användare loggar in eller Windows startar. Ett schemalagt jobb kan ha en eller flera jobbutlösare och du kan skapa, lägga till, aktivera, inaktivera och hämta jobbutlösare.

Jobbutlösare är valfria. Du kan starta schemalagda jobb direkt med hjälp av Start-Job cmdlet eller genom att lägga till parametern RunNow i Register-ScheduledJob kommandot.

Jobbalternativ anger villkoren för att köra ett schemalagt jobb. Varje schemalagt jobb har ett jobbalternativobjekt. Du kan skapa och redigera jobbalternativobjekt och lägga till dem i ett eller flera schemalagda jobb.

Varje gång ett schemalagt jobb startar skapas en jobbinstans. Använd PowerShell-jobb-cmdlets för att visa och hantera jobbinstansen.

Schemalagda jobb sparas på disk och använder cmdlet-verbet Register , i stället för New . XML-filerna finns på den lokala datorn i katalogen $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs .

PowerShell skapar en katalog för varje schemalagt jobb och sparar jobbkommandona, jobbutlösare, jobbalternativ och jobbresultat i den schemalagda jobbkatalogen. Jobbutlösare och jobbalternativ sparas inte på disk oberoende av varandra. De sparas i XML-koden för det schemalagda jobbet för varje schemalagt jobb som de är associerade med.

Schemalagda jobb, jobbutlösare och jobbalternativ visas i PowerShell som objekt. Objekten är sammankopplade, vilket gör dem enkla att identifiera och använda i kommandon och skript.

Schemalagda jobb visas som ScheduledJobDefinition-objekt. Objektet ScheduledJobDefinition har en JobTriggers-egenskap som innehåller jobbutlösare för det schemalagda jobbet och en alternativegenskap som innehåller jobbalternativen. Objekten ScheduledJobTriggers och ScheduledJobOptions som representerar jobbutlösare respektive jobbalternativ har var och en egenskapen JobDefinition som innehåller det schemalagda jobbet som de är associerade med. Den här rekursiva samkopplingen gör det enkelt att hitta utlösare och alternativ för ett schemalagt jobb och att hitta, skripta och visa det schemalagda jobbet som alla jobbutlösare eller jobbalternativ är associerade med.

Se även

about_Scheduled_Jobs_Basics

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

Cmdlets för PSScheduledJob-modulen

Schemaläggaren