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_Troubleshooting