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 cmdlets 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-ScheduledJobskapar ProcessJob, 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ångsschema eller ett å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 klockan 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.

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 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 redigera ett befintligt jobb. Du kan när som helst ändra jobbutlösaren för ett schemalagt jobb.

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 i 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 klockan 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-JobTriggerhä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 schemalagt jobb. 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-ScheduledJobOptionhä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

Så här ändrar du 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 modulen PSScheduledJob , till exempel cmdleten Set-ScheduledJobOption , har inte parametrar för namn eller ID . 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 ProcessJob till True.

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

Hämta 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.

Kommentar

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

Om du vill hämta alla instanser av PowerShell-schemalagda 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.

Cmdleten Get-Job skickar objekt nedåt i pipelinen. Cmdleten Format-Tablevisar 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

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

Kommentar

Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste modulen PSScheduledJob importeras till sessionen. Om du vill importera MODULen PSScheduledJob 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-Job Behå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