Informacje o zaplanowanych zadaniachAbout Scheduled Jobs Basics

Krótki opisShort description

Wyjaśnia, jak tworzyć zaplanowane zadania i zarządzać nimi.Explains how to create and manage scheduled jobs.

Długi opisLong description

W tym dokumencie przedstawiono sposób wykonywania podstawowych zadań związanych z tworzeniem zaplanowanych zadań i zarządzaniem nimi.This document shows how to perform basic tasks of creating and managing scheduled jobs. Aby uzyskać więcej informacji na temat bardziej zaawansowanych zadań, zobacz about_Scheduled_Jobs_Advanced.For information about more advanced tasks, see about_Scheduled_Jobs_Advanced.

Aby uzyskać więcej informacji o poleceniach cmdlet zawartych w module PSScheduledJob , zobacz PSScheduledJob.For more information about the cmdlets contained in the PSScheduledJob module, see PSScheduledJob.

Jak utworzyć zaplanowane zadanieHow to create a scheduled job

Aby utworzyć zaplanowane zadanie, użyj Register-ScheduledJob polecenia cmdlet.To create a scheduled job, use the Register-ScheduledJob cmdlet. Polecenie cmdlet wymaga nazwy i poleceń lub skryptu uruchamianego przez zadanie.The cmdlet requires a name and the commands or script that the job runs. Zadanie można uruchomić natychmiast, dodając parametr RunNow lub tworząc wyzwalacz zadania i ustawiając opcje zadania podczas tworzenia zadania lub edytując istniejące zadanie.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.

Aby utworzyć zadanie, które uruchamia skrypt, użyj parametru FilePath , aby określić ścieżkę do pliku skryptu.To create a job that runs a script, use the FilePath parameter to specify the path to the script file. Aby utworzyć zadanie, które uruchamia polecenia, należy użyć parametru ScriptBlock .To create a job that runs commands, use the ScriptBlock parameter.

Polecenie Register-ScheduledJob cmdlet tworzy ProcessJob , który uruchamia Get-Process polecenie.The Register-ScheduledJob cmdlet creates the ProcessJob , which runs a Get-Process command. To zaplanowane zadanie ma domyślne opcje zadania i brak wyzwalacza zadania.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

Jak utworzyć wyzwalacz zadaniaHow to create a job trigger

Wyzwalacze zadań automatycznie uruchamiają zaplanowane zadanie.Job triggers start a scheduled job automatically. Wyzwalacz zadania może być harmonogramem jednorazowym lub cyklicznym lub zdarzeniem, na przykład podczas logowania użytkownika lub uruchamiania systemu Windows.A job trigger can be one-time or recurring schedule or an event, such as when a user logs on or Windows starts. Każde zadanie może mieć zero, jeden lub wiele wyzwalaczy zadań.Each job can have zero, one, or multiple job triggers.

Aby utworzyć wyzwalacz zadania, użyj New-JobTrigger polecenia cmdlet.To create a job trigger, use the New-JobTrigger cmdlet. Następujące polecenie tworzy wyzwalacz zadania, który uruchamia zadanie co poniedziałek i czwartek o godzinie 5:00.The following command creates a job trigger that starts a job every Monday and Thursday at 5:00 AM. Polecenie zapisuje wyzwalacz zadania w $T zmiennej.The command saves the job trigger in the $T variable.

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

Wyzwalacze zadań są opcjonalne.Job triggers are optional. Zaplanowane zadanie można uruchomić w dowolnym momencie, dodając parametr RunNow do Register-ScheduledJob polecenia lub korzystając z Start-Job poleceń cmdlet.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.

Jak dodać wyzwalacz zadaniaHow to add a job trigger

Po dodaniu wyzwalacza zadania do zaplanowanego zadania, wyzwalacz zadania zostanie dodany do pliku XML zaplanowanego zadania dla zaplanowanego zadania i zostaje częścią zaplanowanego zadania.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.

Możesz dodać wyzwalacz zadania do zaplanowanego zadania podczas tworzenia zaplanowanego zadania lub edytować istniejące zadanie.You can add a job trigger to a scheduled job when you create the scheduled job, or edit an existing job. Wyzwalacz zadania zaplanowanego zadania można zmienić w dowolnym momencie.You can change the job trigger of a scheduled job at any time.

Program PowerShell używa niektórych z tych samych wyzwalaczy zadań, których Harmonogram zadań używa.PowerShell uses some of the same job triggers that Task Scheduler uses. Aby uzyskać szczegółowe informacje o wyzwalaczach zadań, zobacz temat pomocy dla polecenia cmdlet New-JobTrigger .For detailed information about job triggers, see the help topic for the New-JobTrigger cmdlet.

Poniższy przykład używa korzystając do tworzenia $JobParms wartości parametrów, które są przesyłane do Register-ScheduledJob polecenia cmdlet.The following example uses splatting to create $JobParms which are parameter values that are passed to the Register-ScheduledJob cmdlet. Aby uzyskać więcej informacji, zobacz about_Splatting. MD.For more information, see about_Splatting.md. Register-ScheduledJobUżywa @JobParms do tworzenia zaplanowanego zadania.The Register-ScheduledJob uses @JobParms to create a scheduled job. Używa parametru wyzwalacza , aby określić wyzwalacz zadania w $T zmiennej.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

Możesz również dodać wyzwalacz zadania do istniejącego zaplanowanego zadania w dowolnym momencie.You can also add a job trigger to an existing scheduled job at any time. Add-JobTriggerPolecenie cmdlet dodaje wyzwalacz zadania w $T zmiennej do zaplanowanego zadania ProcessJob .The Add-JobTrigger cmdlet adds the job trigger in the $T variable to the ProcessJob scheduled job.

Add-JobTrigger -Name ProcessJob -Trigger $T

W efekcie wyzwalacz zadania uruchamia ProcessJob automatycznie co poniedziałek i czwartek o godzinie 5:00.As a result, the job trigger starts the ProcessJob automatically every Monday and Thursday at 5:00 AM.

Jak uzyskać wyzwalacz zadaniaHow to get a job trigger

Aby uzyskać wyzwalacz zadania zaplanowanego zadania, użyj Get-JobTrigger polecenia cmdlet.To get the job trigger of a scheduled job, use the Get-JobTrigger cmdlet. Użyj parametrów name , ID i inputobject , aby określić zaplanowane zadanie, a nie wyzwalacz zadania.Use the Name , ID , and InputObject parameters to specify the scheduled job, not the job trigger.

Get-JobTrigger Pobiera wyzwalacz zadania 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

Tworzenie opcji zadaniaHow to create job options

Opcje zadania określają warunki uruchamiania i uruchamiania zadania.Job options establish conditions for starting and running the job. Każde zadanie ma domyślne opcje zadania, chyba że zostaną zmienione.Every job has the default job options unless you change them. Ponieważ opcje zadania mogą uniemożliwiać uruchomienie zadania w zaplanowanym czasie, ważne jest zrozumienie opcji zadania i korzystanie z nich uważnie.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.

Program PowerShell używa tych samych opcji zadań, które są używane Harmonogram zadań.PowerShell uses the same job options that Task Scheduler uses. Aby uzyskać szczegółowe informacje na temat opcji zadania, zobacz temat pomocy dla polecenie New-ScheduledJobOption.For detailed information about the job options, see the help topic for New-ScheduledJobOption.

Opcje zadania są przechowywane w pliku XML zaplanowane zadanie.Job options are stored in the scheduled job XML file. Można ustawić opcje zadania podczas tworzenia zaplanowanego zadania lub w dowolnym momencie.You can set job options when you create a scheduled job or change them at any time.

New-ScheduledJobOptionPolecenie cmdlet tworzy zaplanowaną opcję zadania, w której opcja zaplanowanego zadania WakeToRun jest ustawiona na wartość true.The New-ScheduledJobOption cmdlet creates a scheduled job option in which the WakeToRun scheduled job option is set to True. Opcja WakeToRun uruchamia zaplanowane zadanie, nawet jeśli komputer jest w stanie uśpienia lub hibernacji w zaplanowanym czasie rozpoczęcia.The WakeToRun option runs the scheduled job even if the computer is in the Sleep or Hibernate state at the scheduled start time. Polecenie zapisuje opcje zadania w $O zmiennej.The command saves the job options in the $O variable.

$O = New-ScheduledJobOption -WakeToRun

Jak uzyskać opcje zadaniaHow to get job options

Aby uzyskać opcje zadania zaplanowanego zadania, użyj Get-ScheduledJobOption polecenia cmdlet.To get the job options of a scheduled job, use the Get-ScheduledJobOption cmdlet. Użyj parametrów name , ID i inputobject , aby określić zaplanowane zadanie, a nie opcje zadania.Use the Name , ID , and InputObject parameters to specify the scheduled job, not the job options.

Get-ScheduledJobOption Pobiera opcje zadania 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

Jak zmienić opcje zadaniaHow to change job options

Opcje zadania zaplanowanego zadania można zmienić podczas tworzenia zaplanowanego zadania lub edytowania istniejącego zadania.You can change the job options of a scheduled job when you create a scheduled job or edit an existing job.

Splatted $JobParms są przesyłane do Add-JobTrigger polecenia cmdlet, aby utworzyć zadanie procesu.The splatted $JobParms are passed to the Add-JobTrigger cmdlet to create the process job. Używa parametru ScheduledJobOption do określenia opcji zadania w $O zmiennej.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

Możesz również zmienić opcje zadania na istniejące zaplanowane zadanie w dowolnym momencie.You can also change the job options to an existing scheduled job at any time. Następujące polecenie używa polecenia Set-ScheduledJobOption cmdlet, aby zmienić wartość opcji WakeToRun ProcessJob scheduledJob na true.The following command uses the Set-ScheduledJobOption cmdlet to change the value of the WakeToRun option of the ProcessJob scheduledJob to True.

SetPolecenia cmdlet w module PSScheduledJob , takie jak Set-ScheduledJobOption polecenie cmdlet, nie mają parametrów name ani ID .The Set cmdlets in the PSScheduledJob module, such as the Set-ScheduledJobOption cmdlet, don't have Name or ID parameters. Można użyć parametru inputobject do określenia opcji zaplanowanego zadania lub potoku zaplanowanego zadania z Get-ScheduledJobOption polecenia cmdlet do 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.

Ten przykład używa Get-ScheduledJob polecenia cmdlet, aby pobrać ProcessJob.This example uses the Get-ScheduledJob cmdlet to get the ProcessJob. Używa Get-ScheduledJobOption polecenia cmdlet w celu uzyskania opcji zadania w ProcessJob i Set-ScheduledJobOption polecenia cmdlet w celu zmiany opcji zadania WakeToRun w ProcessJob na 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

Jak uzyskać zaplanowane wystąpienia zadańHow to get scheduled job instances

Po rozpoczęciu zaplanowanego zadania program PowerShell tworzy wystąpienie zadania podobne do standardowego zadania w tle programu PowerShell.When a scheduled job is started, PowerShell creates a job instance that is similar to a standard PowerShell background job. Możesz użyć poleceń cmdlet zadania, takich jak Get-Job , Stop-Job i Receive-Job do zarządzania wystąpieniami zadań.You can use the job cmdlets, such as Get-Job, Stop-Job and Receive-Job to manage the job instances.

Uwaga

Aby użyć poleceń cmdlet zadania w wystąpieniach zaplanowanych zadań, moduł PSScheduledJob musi zostać zaimportowany do sesji.To use the job cmdlets on instances of scheduled jobs, the PSScheduledJob module must be imported into the session. Aby zaimportować moduł PSScheduledJob , wpisz Import-Module PSScheduledJob lub użyj dowolnego zaplanowanego polecenia cmdlet zadania, takiego jak Get-ScheduledJob .To import the PSScheduledJob module, type Import-Module PSScheduledJob or use any scheduled job cmdlet, such as Get-ScheduledJob.

Aby uzyskać wszystkie wystąpienia zaplanowanych zadań programu PowerShell i wszystkie aktywne zadania standardowe, użyj Get-Job polecenia cmdlet.To get all instances of PowerShell scheduled jobs, and all active standard jobs, use the Get-Job cmdlet. Import-ModulePolecenie cmdlet importuje moduł PSScheduledJob i Get-Job Pobiera zadania na komputerze lokalnym.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 Pobiera wystąpienia elementu ProcessJob na komputerze lokalnym.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

Domyślny ekran nie pokazuje czasu rozpoczęcia, który zwykle odróżnia wystąpienia tego samego zaplanowanego zadania.The default display does not show the start time, which typically distinguishes instances of the same scheduled job.

Get-JobPolecenie cmdlet wysyła obiekty w dół potoku.The Get-Job cmdlet sends objects down the pipeline. Format-TablePolecenie cmdlet wyświetla nazwę , Identyfikator i właściwości BeginTime zaplanowanego zadania.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

Pobierz zaplanowane wyniki zadaniaGet scheduled job results

Aby uzyskać wyniki wystąpienia zaplanowanego zadania, użyj Receive-Job polecenia cmdlet.To get the results of an instance of a scheduled job, use the Receive-Job cmdlet.

Uwaga

Aby użyć poleceń cmdlet zadania w wystąpieniach zaplanowanych zadań, moduł PSScheduledJob musi zostać zaimportowany do sesji.To use the Job cmdlets on instances of scheduled jobs, the PSScheduledJob module must be imported into the session. Aby zaimportować moduł PSScheduledJob , wpisz Import-Module PSScheduledJob lub użyj dowolnego zaplanowanego polecenia cmdlet zadania, takiego jak Get-ScheduledJob .To import the PSScheduledJob module, type Import-Module PSScheduledJob or use any scheduled job cmdlet, such as Get-ScheduledJob.

Ten przykład pobiera wyniki najnowszego wystąpienia zaplanowanego zadania ProcessJob (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

Wyniki zaplanowanych zadań są zapisywane na dysku, więc parametr Keep Receive-Job nie jest wymagany.The results of scheduled jobs are saved on disk, so the Keep parameter of Receive-Job is not required. Jednak bez parametru Keep można uzyskać wyniki zaplanowanego zadania tylko raz w każdej sesji programu PowerShell.However, without the Keep parameter, you can get the results of a scheduled job only once in each PowerShell session. Aby rozpocząć nową sesję programu PowerShell, wpisz PowerShell lub Otwórz nowe okno programu PowerShell.To start a new PowerShell session, type PowerShell or open a new PowerShell window.

Zobacz teżSee 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

Polecenia cmdlet modułu PSScheduledJobPSScheduledJob module cmdlets

Harmonogram zadańTask Scheduler