Om schemalagda jobb
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äggaraktiviteter.
Liksom 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-Job
och 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 över 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 schemalagt 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 cmdletarna som finns i modulen 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-jobben och cmdletarna för schemalagt jobb 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 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.
Tips
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åller parametern Behåll sparas jobbets resultat 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 för den schemalagda jobbkatalogen.
Start-Job -DefinitionName ProcessJob
Cmdleten Unregister-ScheduledJob
tar bort det schemalagda jobbet ProcessJob och alla sparade resultat av jobbinstanserna.
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ångs- eller å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 parametern Start-Job cmdlet
, 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-cmdletar för att visa och hantera jobbinstansen.
Schemalagda jobb sparas på disken 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 jobbkommandon, jobbutlösare, jobbalternativ och jobbresultat i den schemalagda jobbkatalogen. Jobbutlösare och jobbalternativ sparas inte till disk 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 egenskapen JobTriggers som innehåller jobbutlösare för det schemalagda jobbet och egenskapen 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.