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

PowerShell-schemalagda jobb är en användbar hybrid av PowerShell-bakgrundsjobb och schemaläggaraktiviteter.

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

Precis som schemaläggaraktiviteter sparas schemalagda jobb på 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 på disken i ett lättillgängligt format, vilket ger en logg med jobbutdata som körs. Schemalagda jobb levereras med en anpassad uppsättning cmdletar 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.

Cmdletar för schemalagda jobb ingår i modulen PSScheduledJob som är installerad 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 cmdlets som finns i modulen PSScheduledJob finns i PSScheduledJob.

Mer information om PowerShell-bakgrundsjobb finns i about_Jobs.

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

Kommentar

Du kan visa och hantera schemalagda PowerShell-jobb i Schemaläggaren. PowerShell-jobben och cmdletarna för schemalagda jobb fungerar endast 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 cmdleten Get-Process . 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

Cmdleten Get-ScheduledJob hämtar de schemalagda jobben 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 Set-ScheduledJob för att ändra egenskapen 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

Cmdleten Get-ScheduledJob hämtar det schemalagda jobbet ProcessJob .

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

Cmdleten Get-Job hämtar alla instanser av det schemalagda jobbet ProcessJob som har körts hittills. Cmdleten Get-Job hämtar endast schemalagda jobb när modulen PSScheduledJob importeras till den aktuella sessionen.

Dricks

Observera att du använder cmdletar för schemalagt jobb för att hantera schemalagda jobb, men du använder jobb-cmdletarna 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

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

Receive-Job -ID 51

Även om Receive-Job kommandot inte innehöll parametern Behåll sparas resultatet av jobbet på disken tills du tar bort dem eller det maximala antalet resultat överskrids.

Jobbresultatet är inte längre tillgängligt i den här sessionen, men om du startar en ny session eller öppnar ett nytt PowerShell-fönster blir resultatet av jobbet tillgängligt igen.

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

Jobb som startas med hjälp av cmdleten Start-Job är vanliga PowerShell-bakgrundsjobb, 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 i den schemalagda jobbkatalogen.

Start-Job -DefinitionName ProcessJob

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

Unregister-ScheduledJob ProcessJob

Begrepp 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 jobbalternativen 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 Start-Job cmdletav , eller genom att lägga till parametern RunNow i kommandot Register-ScheduledJob .

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-cmdletarna för att visa och hantera jobbinstansen.

Schemalagda jobb sparas på disken och använder cmdlet-verbet , i Registerstä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 jobbkommandon, jobbutlösare, jobbalternativ och jobbresultat i den schemalagda jobbkatalogen. Jobbutlösare och jobbalternativ sparas inte på disken oberoende av varandra. De sparas i det schemalagda jobbets XML 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 egenskap Alternativ som innehåller jobbalternativen. Objekten ScheduledJobTriggers och ScheduledJobOptions som representerar jobbutlösare respektive jobbalternativ har en JobDefinition-egenskap som innehåller det schemalagda jobb som de är associerade med. Den här rekursiva sammankopplingen gör det enkelt att hitta utlösare och alternativ för ett schemalagt jobb och att hitta, skripta och visa det schemalagda jobb som alla jobbutlösare eller jobbalternativ är associerade med.

Se även