Dela via


Om grunderna för schemalagda jobb

Kort beskrivning

Förklarar hur du skapar och hanterar schemalagda jobb.

Lång beskrivning

Det här dokumentet visar hur du utför grundläggande uppgifter för att skapa och hantera schemalagda jobb. Information om mer avancerade uppgifter finns i about_Scheduled_Jobs_Advanced.

Så här skapar du ett schemalagt jobb

Om du vill skapa ett schemalagt jobb använder du cmdleten Register-ScheduledJob . Cmdleten kräver ett namn och de kommandon eller skript som jobbet kör. Du kan antingen köra jobbet direkt genom att lägga till parametern RunNow eller skapa en jobbutlösare och ange jobbalternativ när du skapar jobbet eller redigera ett befintligt jobb.

Om du vill skapa ett jobb som kör ett skript använder du parametern FilePath för att ange sökvägen till skriptfilen. Om du vill skapa ett jobb som kör kommandon använder du parametern ScriptBlock .

Cmdleten Register-ScheduledJob skapar processjobbet, som kör ett Get-Process kommando. Det här schemalagda jobbet har standardalternativen för jobb och ingen jobbutlösare.

Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id         Name            Triggers        Command       Enabled
--         ----            --------        -------       -------
8          ProcessJob      {}              Get-Process   True

Så här skapar du en jobbutlösare

Jobbutlösare startar ett schemalagt jobb automatiskt. En jobbutlösare kan vara ett engångs- eller återkommande schema eller en händelse, till exempel när en användare loggar in eller Windows startar. Varje jobb kan ha noll, en eller flera jobbutlösare.

Om du vill skapa en jobbutlösare använder du cmdleten New-JobTrigger . Följande kommando skapar en jobbutlösare som startar ett jobb varje måndag och torsdag kl. 05:00. Kommandot sparar jobbutlösaren i variabeln $T .

$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"

Jobbutlösare är valfria. Du kan starta ett schemalagt jobb när som helst genom att lägga till parametern RunNow i kommandot Register-ScheduledJob eller med hjälp Start-Job av cmdletarna.

Så här lägger du till en jobbutlösare

När du lägger till en jobbutlösare i ett schemalagt jobb läggs jobbutlösaren till i XML-filen för det schemalagda jobbet för det schemalagda jobbet och blir en del av det schemalagda jobbet.

Du kan lägga till en jobbutlösare i ett schemalagt jobb när du skapar det schemalagda jobbet eller redigerar ett befintligt jobb. Du kan när som helst ändra jobbutlösaren för ett schemalagt jobb.

PowerShell använder några av de jobbutlösare som Schemaläggaren använder. Detaljerad information om jobbutlösare finns i hjälpavsnittet för cmdleten New-JobTrigger .

I följande exempel används splatting för att skapa $JobParms som är parametervärden som skickas till cmdleten Register-ScheduledJob . Mer information finns i about_Splatting.md. Register-ScheduledJob Använder @JobParms för att skapa ett schemalagt jobb. Den använder parametern Trigger (Utlösare ) för att ange jobbutlösaren i variabeln $T .

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Command}
  Trigger = $T
}

Register-ScheduledJob @JobParms

Du kan också lägga till en jobbutlösare till ett befintligt schemalagt jobb när som helst. Cmdleten Add-JobTrigger lägger till jobbutlösaren i variabeln $T till det schemalagda jobbet ProcessJob .

Add-JobTrigger -Name ProcessJob -Trigger $T

Därför startar jobbutlösaren processjobbet automatiskt varje måndag och torsdag kl. 05:00.

Så här hämtar du en jobbutlösare

Använd cmdleten Get-JobTrigger för att hämta jobbutlösaren för ett schemalagt jobb. Använd parametrarna Namn, ID och InputObject för att ange det schemalagda jobbet, inte jobbutlösaren.

Get-JobTrigger hämtar jobbutlösaren för processjobbet.

Get-JobTrigger -Name ProcessJob
Id   Frequency       Time                   DaysOfWeek              Enabled
--   ---------       ----                   ----------              -------
1    Weekly          11/7/2011 5:00:00 AM   {Monday, Thursday}      True

Så här skapar du jobbalternativ

Jobbalternativ anger villkor för att starta och köra jobbet. Alla jobb har standardalternativen för jobb om du inte ändrar dem. Eftersom jobbalternativ kan förhindra att ett jobb körs vid den schemalagda tiden är det viktigt att förstå jobbalternativen och använda dem noggrant.

PowerShell använder samma jobbalternativ som Schemaläggaren använder. Detaljerad information om jobbalternativen finns i hjälpavsnittet för New-ScheduledJobOption.

Jobbalternativ lagras i xml-filen för det schemalagda jobbet. Du kan ange jobbalternativ när du skapar ett schemalagt jobb eller ändrar dem när som helst.

Cmdleten New-ScheduledJobOption skapar ett schemalagt jobbalternativ där alternativet WakeToRun-schemalagt jobb är inställt på Sant. Alternativet WakeToRun kör det schemalagda jobbet även om datorn är i viloläge eller viloläge vid den schemalagda starttiden. Kommandot sparar jobbalternativen i variabeln $O .

$O = New-ScheduledJobOption -WakeToRun

Så här hämtar du jobbalternativ

Om du vill hämta jobbalternativen för ett schemalagt jobb använder du cmdleten Get-ScheduledJobOption . Använd parametrarna Namn, ID och InputObject för att ange det schemalagda jobbet, inte jobbalternativen.

Get-ScheduledJobOption hämtar jobbalternativen för processjobbet.

Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries     : False
StopIfGoingOnBatteries : True
WakeToRun              : False
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

Ändra jobbalternativ

Du kan ändra jobbalternativen för ett schemalagt jobb när du skapar ett schemalagt jobb eller redigerar ett befintligt jobb.

Den splattade skickas $JobParms till cmdleten Add-JobTrigger för att skapa processjobbet. Den använder parametern ScheduledJobOption för att ange jobbalternativen i variabeln $O .

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  ScheduledJobOption = $O
}

Add-JobTrigger @JobParms

Du kan också ändra jobbalternativen till ett befintligt schemalagt jobb när som helst. Följande kommando använder cmdleten Set-ScheduledJobOption för att ändra värdet för alternativet WakeToRun för alternativet ProcessJob scheduledJob till True.

Cmdletarna Set i modulen PSScheduledJob , till exempel cmdleten Set-ScheduledJobOption , har inte namn- eller ID-parametrar . Du kan använda parametern InputObject för att ange alternativen för schemalagt jobb eller skicka ett schemalagt jobb från Get-ScheduledJobOption cmdleten till Set-ScheduledJobOption.

I det här exemplet används cmdleten Get-ScheduledJob för att hämta processjobbet. Den använder cmdleten Get-ScheduledJobOption för att hämta jobbalternativen i ProcessJob och cmdleten Set-ScheduledJobOption för att ändra alternativet WakeToRun-jobb i processjobbet till Sant.

Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
 Set-ScheduledJobOption -WakeToRun

Så här hämtar du schemalagda jobbinstanser

När ett schemalagt jobb startas skapar PowerShell en jobbinstans som liknar ett Standard PowerShell-bakgrundsjobb. Du kan använda jobb-cmdletar, till exempel Get-Job, Stop-Job och Receive-Job för att hantera jobbinstanserna.

Anteckning

Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste modulen PSScheduledJob importeras till sessionen. Om du vill importera PSScheduledJob-modulen skriver Import-Module PSScheduledJob eller använder du en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob.

Om du vill hämta alla instanser av schemalagda PowerShell-jobb och alla aktiva standardjobb använder du cmdleten Get-Job . Cmdleten Import-Module importerar modulen PSScheduledJob och Get-Job hämtar jobben på den lokala datorn.

Import-Module PSScheduledJob
Get-Job

Get-Job hämtar instanser av ProcessJob på den lokala datorn.

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

Standardvisningen visar inte starttiden, vilket vanligtvis skiljer instanser av samma schemalagda jobb åt.

Cmdleten Get-Job skickar objekt nedåt i pipelinen. Cmdleten Format-Table visar egenskaperna Namn, ID och BeginTime för det schemalagda jobbet.

Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name       Id BeginTime
----       -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM

Hämta resultat för schemalagt jobb

Om du vill hämta resultatet av en instans av ett schemalagt jobb använder du cmdleten Receive-Job .

Anteckning

Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste modulen PSScheduledJob importeras till sessionen. Om du vill importera PSScheduledJob-modulen skriver Import-Module PSScheduledJob eller använder du en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob.

Det här exemplet hämtar resultatet av den senaste instansen av det schemalagda jobbet processjobb (ID = 51).

Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep

Resultatet av schemalagda jobb sparas på disken, så parametern Receive-JobBehåll för krävs inte. Men utan parametern Behåll kan du bara få resultatet av ett schemalagt jobb en gång i varje PowerShell-session. Om du vill starta en ny PowerShell-session skriver PowerShell eller öppnar du ett nytt PowerShell-fönster.

Se även

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

about_Scheduled_Jobs

about_Splatting.md

Schemaläggaren