Om grundläggande om schemalagda jobbAbout Scheduled Jobs Basics

Kort beskrivningShort description

Förklarar hur du skapar och hanterar schemalagda jobb.Explains how to create and manage scheduled jobs.

Lång beskrivningLong description

Det här dokumentet visar hur du utför grundläggande uppgifter för att skapa och hantera schemalagda jobb.This document shows how to perform basic tasks of creating and managing scheduled jobs. Information om mer avancerade uppgifter finns about_Scheduled_Jobs_Advanced.For information about more advanced tasks, see about_Scheduled_Jobs_Advanced.

Mer information om de cmdletar som finns i PSScheduledJob -modulen finns i PSScheduledJob.For more information about the cmdlets contained in the PSScheduledJob module, see PSScheduledJob.

Så här skapar du ett schemalagt jobbHow to create a scheduled job

Använd cmdleten för att skapa ett schemalagt jobb Register-ScheduledJob .To create a scheduled job, use the Register-ScheduledJob cmdlet. Cmdleten kräver ett namn och de kommandon eller skript som jobbet kör.The cmdlet requires a name and the commands or script that the job runs. Du kan antingen köra jobbet direkt genom att lägga till parametern RunNow eller skapa en jobb utlösare och ange jobb alternativ när du skapar jobbet, eller redigera ett befintligt jobb.You can either run the job immediately by adding the RunNow parameter, or create a job trigger and set job options when you create the job, or edit an existing job.

Om du vill skapa ett jobb som kör ett skript använder du parametern sökväg för att ange sökvägen till skript filen.To create a job that runs a script, use the FilePath parameter to specify the path to the script file. Om du vill skapa ett jobb som kör kommandon använder du parametern script block .To create a job that runs commands, use the ScriptBlock parameter.

Register-ScheduledJobCmdlet: en skapar ProcessJob , som kör ett Get-Process kommando.The Register-ScheduledJob cmdlet creates the ProcessJob , which runs a Get-Process command. Det här schemalagda jobbet har standard jobb alternativen och ingen jobb utlösare.This scheduled job has the default job options and no job trigger.

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

Så här skapar du en jobb utlösareHow to create a job trigger

Jobb utlösare startar ett schemalagt jobb automatiskt.Job triggers start a scheduled job automatically. En jobb utlösare kan vara ett engångs schema eller ett återkommande schema eller en händelse, till exempel när en användare loggar in eller Windows startas.A job trigger can be one-time or recurring schedule or an event, such as when a user logs on or Windows starts. Varje jobb kan ha noll, ett eller flera jobb utlösare.Each job can have zero, one, or multiple job triggers.

Använd cmdleten för att skapa en jobb utlösare New-JobTrigger .To create a job trigger, use the New-JobTrigger cmdlet. Följande kommando skapar en jobb utlösare som startar ett jobb varje måndag och torsdag kl. 5:00.The following command creates a job trigger that starts a job every Monday and Thursday at 5:00 AM. Kommandot sparar jobb utlösaren i $T variabeln.The command saves the job trigger in the $T variable.

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

Jobb utlösare är valfria.Job triggers are optional. Du kan starta ett schemalagt jobb när som helst genom att lägga till parametern RunNow i ditt Register-ScheduledJob kommando, eller genom att använda Start-Job cmdletarna.You can start a scheduled job at any time by adding the RunNow parameter to your Register-ScheduledJob command, or by using the Start-Job cmdlets.

Så här lägger du till en jobb utlösareHow to add a job trigger

När du lägger till en jobb utlösare i ett schemalagt jobb läggs jobb utlösaren till i det schemalagda jobbets XML-fil för det schemalagda jobbet och blir en del av det schemalagda jobbet.When you add a job trigger to a scheduled job, the job trigger is added to the scheduled job XML file for the scheduled job and becomes part of the scheduled job.

Du kan lägga till en jobb utlösare i ett schemalagt jobb när du skapar det schemalagda jobbet eller redigera ett befintligt jobb.You can add a job trigger to a scheduled job when you create the scheduled job, or edit an existing job. Du kan när som helst ändra jobb utlösaren för ett schemalagt jobb.You can change the job trigger of a scheduled job at any time.

PowerShell använder vissa av de jobb utlösare som Schemaläggaren använder.PowerShell uses some of the same job triggers that Task Scheduler uses. Detaljerad information om jobb utlösare finns i hjälp avsnittet för cmdleten New-JobTrigger .For detailed information about job triggers, see the help topic for the New-JobTrigger cmdlet.

I följande exempel används ihopbuntning för att skapa $JobParms som är parameter värden som skickas till Register-ScheduledJob cmdleten.The following example uses splatting to create $JobParms which are parameter values that are passed to the Register-ScheduledJob cmdlet. Mer information finns i about_Splatting. MD.For more information, see about_Splatting.md. Register-ScheduledJobAnvänder @JobParms för att skapa ett schemalagt jobb.The Register-ScheduledJob uses @JobParms to create a scheduled job. Den använder Utlösar -parametern för att ange jobb utlösaren i $T variabeln.It uses the Trigger parameter to specify the job trigger in the $T variable.

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

Register-ScheduledJob @JobParms

Du kan också lägga till en jobb utlösare till ett befintligt schemalagt jobb när som helst.You can also add a job trigger to an existing scheduled job at any time. Add-JobTriggerCmdleten lägger till jobb utlösaren i $T variabeln till det schemalagda ProcessJob -jobbet.The Add-JobTrigger cmdlet adds the job trigger in the $T variable to the ProcessJob scheduled job.

Add-JobTrigger -Name ProcessJob -Trigger $T

Därför startar jobb utlösaren ProcessJob automatiskt varje måndag och torsdag kl. 5:00.As a result, the job trigger starts the ProcessJob automatically every Monday and Thursday at 5:00 AM.

Så här hämtar du en jobb utlösareHow to get a job trigger

Använd cmdleten för att hämta jobb utlösaren för ett schemalagt jobb Get-JobTrigger .To get the job trigger of a scheduled job, use the Get-JobTrigger cmdlet. Använd parametrarna Name , ID och InputObject för att ange det schemalagda jobbet, inte jobb utlösaren.Use the Name , ID , and InputObject parameters to specify the scheduled job, not the job trigger.

Get-JobTrigger hämtar jobb utlösaren för ProcessJob.Get-JobTrigger gets the job trigger of the ProcessJob.

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 jobb alternativHow to create job options

Jobb alternativ fastställer villkor för att starta och köra jobbet.Job options establish conditions for starting and running the job. Varje jobb har standard jobb alternativ om du inte ändrar dem.Every job has the default job options unless you change them. Eftersom jobb alternativ kan förhindra att ett jobb körs vid den schemalagda tiden är det viktigt att förstå jobb alternativen och använda dem noggrant.Because job options can prevent a job from running at the scheduled time, it is important to understand the job options and use them carefully.

PowerShell använder samma jobb alternativ som Schemaläggaren använder.PowerShell uses the same job options that Task Scheduler uses. Detaljerad information om jobb alternativen finns i hjälp avsnittet för New-ScheduledJobOption.For detailed information about the job options, see the help topic for New-ScheduledJobOption.

Jobb alternativen lagras i XML-filen med schemalagt jobb.Job options are stored in the scheduled job XML file. Du kan ange jobb alternativ när du skapar ett schemalagt jobb eller ändrar dem när som helst.You can set job options when you create a scheduled job or change them at any time.

New-ScheduledJobOptionCmdleten skapar ett schemalagt jobb-alternativ där alternativet WakeToRun schemalagt jobb är inställt på True.The New-ScheduledJobOption cmdlet creates a scheduled job option in which the WakeToRun scheduled job option is set to True. Alternativet WakeToRun kör det schemalagda jobbet även om datorn är i vilo läge eller vilo läge vid den schemalagda start tiden.The WakeToRun option runs the scheduled job even if the computer is in the Sleep or Hibernate state at the scheduled start time. Kommandot sparar jobb alternativen i $O variabeln.The command saves the job options in the $O variable.

$O = New-ScheduledJobOption -WakeToRun

Så här hämtar du jobb alternativHow to get job options

Använd cmdleten för att hämta jobb alternativen för ett schemalagt jobb Get-ScheduledJobOption .To get the job options of a scheduled job, use the Get-ScheduledJobOption cmdlet. Använd parametrarna Name , ID och InputObject för att ange det schemalagda jobbet, inte jobb alternativen.Use the Name , ID , and InputObject parameters to specify the scheduled job, not the job options.

Get-ScheduledJobOption hämtar jobb alternativen för ProcessJob.Get-ScheduledJobOption gets the job options of the ProcessJob.

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 jobb alternativHow to change job options

Du kan ändra jobb alternativen för ett schemalagt jobb när du skapar ett schemalagt jobb eller redigera ett befintligt jobb.You can change the job options of a scheduled job when you create a scheduled job or edit an existing job.

Splatted $JobParms skickas till Add-JobTrigger cmdlet: en för att skapa process jobbet.The splatted $JobParms are passed to the Add-JobTrigger cmdlet to create the process job. Parametern ScheduledJobOption används för att ange jobb alternativen i $O variabeln.It uses the ScheduledJobOption parameter to specify the job options in the $O variable.

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

Add-JobTrigger @JobParms

Du kan också ändra jobb alternativen till ett befintligt schemalagt jobb när som helst.You can also change the job options to an existing scheduled job at any time. Följande kommando använder Set-ScheduledJobOption cmdleten för att ändra värdet för alternativet WakeToRun för ProcessJob scheduledJob till True.The following command uses the Set-ScheduledJobOption cmdlet to change the value of the WakeToRun option of the ProcessJob scheduledJob to True.

SetCmdletarna i PSScheduledJob -modulen, t. ex. Set-ScheduledJobOption cmdlet, har inte namn -eller ID- parametrar.The Set cmdlets in the PSScheduledJob module, such as the Set-ScheduledJobOption cmdlet, don't have Name or ID parameters. Du kan använda parametern InputObject för att ange de schemalagda jobb alternativen eller skicka ett schemalagt jobb från Get-ScheduledJobOption cmdlet till Set-ScheduledJobOption .You can use the InputObject parameter to specify the scheduled job options or pipe a scheduled job from Get-ScheduledJobOption cmdlet to Set-ScheduledJobOption.

I det här exemplet används Get-ScheduledJob cmdlet: en för att hämta ProcessJob.This example uses the Get-ScheduledJob cmdlet to get the ProcessJob. Den använder Get-ScheduledJobOption cmdleten för att hämta jobb alternativen i ProcessJob och Set-ScheduledJobOption cmdleten för att ändra WakeToRun -jobbets alternativ i ProcessJob till true.It uses the Get-ScheduledJobOption cmdlet to get the job options in the ProcessJob and the Set-ScheduledJobOption cmdlet to change the WakeToRun job option in the ProcessJob to True.

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

Så här hämtar du schemalagda jobb instanserHow to get scheduled job instances

När ett schemalagt jobb startas skapar PowerShell en jobb instans som liknar ett standard bakgrunds jobb i PowerShell.When a scheduled job is started, PowerShell creates a job instance that is similar to a standard PowerShell background job. Du kan använda jobb-cmdletar, till exempel Get-Job Stop-Job och Receive-Job för att hantera jobb instanser.You can use the job cmdlets, such as Get-Job, Stop-Job and Receive-Job to manage the job instances.

Anteckning

Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste PSScheduledJob -modulen importeras till-sessionen.To use the job cmdlets on instances of scheduled jobs, the PSScheduledJob module must be imported into the session. Om du vill importera PSScheduledJob -modulen skriver du Import-Module PSScheduledJob eller använder en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob .To import the PSScheduledJob module, type Import-Module PSScheduledJob or use any scheduled job cmdlet, such as Get-ScheduledJob.

Om du vill hämta alla instanser av schemalagda PowerShell-jobb och alla aktiva standard jobb använder du Get-Job cmdleten.To get all instances of PowerShell scheduled jobs, and all active standard jobs, use the Get-Job cmdlet. Import-ModuleCmdleten importerar modulen PSScheduledJob och Get-Job hämtar jobben på den lokala datorn.The Import-Module cmdlet imports the PSScheduledJob module and Get-Job gets the jobs on the local computer.

Import-Module PSScheduledJob
Get-Job

Get-Job hämtar instanser av ProcessJob på den lokala datorn.Get-Job gets instances of ProcessJob on the local computer.

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

Standard visningen visar inte start tiden, vilket normalt särskiljer instanser av samma schemalagda jobb.The default display does not show the start time, which typically distinguishes instances of the same scheduled job.

Get-JobCmdleten skickar objekt nedåt i pipelinen.The Get-Job cmdlet sends objects down the pipeline. Format-TableCmdleten visar egenskaperna namn , ID och BeginTime för det schemalagda jobbet.The Format-Table cmdlet displays the Name , ID , and BeginTime properties of the scheduled job.

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 schemalagt jobb resultatGet scheduled job results

Använd cmdleten för att hämta resultatet av en instans av ett schemalagt jobb Receive-Job .To get the results of an instance of a scheduled job, use the Receive-Job cmdlet.

Anteckning

Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste PSScheduledJob -modulen importeras till-sessionen.To use the Job cmdlets on instances of scheduled jobs, the PSScheduledJob module must be imported into the session. Om du vill importera PSScheduledJob -modulen skriver du Import-Module PSScheduledJob eller använder en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob .To import the PSScheduledJob module, type Import-Module PSScheduledJob or use any scheduled job cmdlet, such as Get-ScheduledJob.

I det här exemplet får du resultatet från den senaste instansen av det schemalagda ProcessJob -jobbet (ID = 51).This examples gets the results of the newest instance of the ProcessJob scheduled job (ID = 51).

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

Resultatet av schemalagda jobb sparas på disk, så parametern Keep of Receive-Job är inte obligatorisk.The results of scheduled jobs are saved on disk, so the Keep parameter of Receive-Job is not required. Men utan parametern Keep kan du bara hämta resultatet av ett schemalagt jobb en gång i varje PowerShell-session.However, without the Keep parameter, you can get the results of a scheduled job only once in each PowerShell session. Starta en ny PowerShell-session genom att skriva PowerShell eller öppna ett nytt PowerShell-fönster.To start a new PowerShell session, type PowerShell or open a new PowerShell window.

Se ävenSee also

about_Scheduled_Jobs_Advancedabout_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshootingabout_Scheduled_Jobs_Troubleshooting

about_Scheduled_Jobsabout_Scheduled_Jobs

about_Splatting. MDabout_Splatting.md

Cmdletar för PSScheduledJob -modulPSScheduledJob module cmdlets

SchemaläggarenTask Scheduler