about_Scheduled_Jobs_Basics

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. Mer information om mer avancerade uppgifter finns i about_Scheduled_Jobs_Advanced.

Mer information om cmdletarna som finns i modulen PSScheduledJob finns i PSScheduledJob.

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 ProcessJob, som kör ett Get-Process kommando. Det här schemalagda jobbet har standardjobbalternativen 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.

Använd cmdleten för New-JobTrigger att skapa en jobbutlösare. 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 när som helst starta ett schemalagt jobb genom att lägga till parametern RunNow i Register-ScheduledJob kommandot eller med hjälp Start-Job av cmdletarna.

Lägga 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 och blir en del av det schemalagda jobbet.

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

PowerShell använder några av samma 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. Används Register-ScheduledJob@JobParms för att skapa ett schemalagt jobb. Den använder parametern 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 för att hämta jobbutlösaren för Get-JobTrigger 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

Skapa jobbalternativ

Jobbalternativ upprättar villkor för att starta och köra jobbet. Varje 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

Använd cmdleten för att hämta jobbalternativen för Get-ScheduledJobOption ett schemalagt jobb. 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 i alternativet ProcessJob scheduledJob till True.

Cmdletarna Set i PSScheduledJob-modulen , till exempel cmdleten Set-ScheduledJobOption , har inte namn- eller ID-parametrar . Du kan använda parametern InputObject för att ange schemalagda jobbalternativ eller skicka ett schemalagt jobb från Get-ScheduledJobOption cmdlet 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.

Använd cmdleten Get-Job för att hämta alla instanser av schemalagda PowerShell-jobb och alla aktiva standardjobb. 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.

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 schemalagda jobbresultat

Använd cmdleten Receive-Job för att hämta resultatet av en instans av ett schemalagt jobb.

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 ProcessJob (ID = 51).

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

Resultatet av schemalagda jobb sparas på disken, så parametern Receive-JobBehåll 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