Udostępnij za pośrednictwem


Informacje o zaplanowanych zadaniach

Krótki opis

W tym artykule opisano zaplanowane zadania i wyjaśniono, jak używać zaplanowanych zadań i zarządzać nimi w programie PowerShell oraz w harmonogramie zadań.

Długi opis

Zaplanowane zadania programu PowerShell to przydatne hybrydowe zadania w tle programu PowerShell i harmonogram zadań.

Podobnie jak zadania w tle programu PowerShell, zaplanowane zadania są uruchamiane asynchronicznie w tle. Wystąpienia zaplanowanych zadań, które zostały uruchomione, można zarządzać przy użyciu poleceń cmdlet zadań, takich jak Start-Job, Get-Job, Stop-Jobi Receive-Job.

Podobnie jak zadania harmonogramu zadań, zaplanowane zadania są zapisywane na dysku. Zadania można wyświetlać i zarządzać nimi w harmonogramie zadań, włączać i wyłączać je w razie potrzeby, uruchamiać je lub używać ich jako szablonów, ustanawiać jednorazowe lub cykliczne harmonogramy uruchamiania zadań lub ustawiać warunki uruchamiania zadań.

Ponadto wyniki zaplanowanych wystąpień zadań są zapisywane na dysku w łatwo dostępnym formacie, zapewniając uruchomiony dziennik danych wyjściowych zadania. Zaplanowane zadania są dostarczane z dostosowanym zestawem poleceń cmdlet do zarządzania nimi. Polecenia cmdlet umożliwiają tworzenie, edytowanie, zarządzanie, wyłączanie i ponowne włączanie zaplanowanych zadań, wyzwalaczy zadań i opcji zadań.

Ten kompleksowy i elastyczny zestaw narzędzi sprawia, że zaplanowane zadania są istotnym składnikiem wielu profesjonalnych rozwiązań IT programu PowerShell.

Zaplanowane polecenia cmdlet zadania są uwzględniane w module PSScheduledJob instalowanym za pomocą programu PowerShell. Ten moduł został wprowadzony w programie PowerShell 3.0 i działa w programie PowerShell 3.0 i nowszych wersjach programu PowerShell. Aby uzyskać więcej informacji na temat poleceń cmdlet zawartych w module PSScheduledJob .

Aby uzyskać więcej informacji na temat zadań w tle programu PowerShell, zobacz about_Jobs.

Aby uzyskać więcej informacji na temat harmonogramu zadań, zobacz Harmonogram zadań.

Uwaga

Zaplanowane zadania programu PowerShell można wyświetlać i zarządzać nimi w harmonogramie zadań. Zadania programu PowerShell i zaplanowane polecenia cmdlet zadań działają tylko dla zaplanowanych zadań utworzonych w programie PowerShell.

Szybki start

W tym przykładzie tworzone jest zaplanowane zadanie uruchamiane codziennie o godzinie 3:00 i uruchamiane jest Get-Process polecenie cmdlet. Zadanie jest uruchamiane nawet wtedy, gdy komputer jest uruchomiony na bateriach.

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options

Polecenie Get-ScheduledJob cmdlet pobiera zaplanowane zadania na komputerze lokalnym.

Get-ScheduledJob
Id         Name            Triggers        Command            Enabled
--         ----            --------        -------            -------
7          ProcessJob      {1}             Get-Process        True

Get-JobTrigger pobiera wyzwalacze zadania ProcessJob. Parametry wejściowe określają zaplanowane zadanie, a nie wyzwalacz, ponieważ wyzwalacze są zapisywane w zaplanowanym zadaniu.

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

W tym przykładzie użyto parametru Set-ScheduledJobContinueIfGoingOnBattery polecenia cmdlet, aby zmienić właściwość StopIfGoingOnBatteries obiektu ProcessJob na False.

Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries     : True
StopIfGoingOnBatteries : False
WakeToRun              : True
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

Polecenie Get-ScheduledJob cmdlet pobiera zaplanowane zadanie ProcessJob .

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

Polecenie Get-Job cmdlet pobiera wszystkie wystąpienia zaplanowanego zadania ProcessJob , które zostało uruchomione do tej pory. Polecenie Get-Job cmdlet pobiera zaplanowane zadania tylko wtedy, gdy moduł PSScheduledJob zostanie zaimportowany do bieżącej sesji.

Porada

Zwróć uwagę, że polecenia cmdlet zaplanowanego zadania służą do zarządzania zaplanowanymi zadaniami, ale do zarządzania wystąpieniami zaplanowanych zadań służą polecenia cmdlet zadań.

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

Polecenie Receive-Job cmdlet pobiera wyniki ostatniego wystąpienia zaplanowanego zadania ProcessJob (identyfikator = 51).

Receive-Job -ID 51

Mimo że Receive-Job polecenie nie zawiera parametru Keep , wyniki zadania są zapisywane na dysku do momentu ich usunięcia lub maksymalnej liczby wyników zostaną przekroczone.

Wyniki zadania nie są już dostępne w tej sesji, ale jeśli uruchomisz nową sesję lub otworzysz nowe okno programu PowerShell, wyniki zadania będą ponownie dostępne.

Następujące polecenie używa parametru Start-JobDefinitionName polecenia cmdlet do uruchomienia zaplanowanego zadania ProcessJob.

Zadania uruchamiane przy użyciu Start-Job polecenia cmdlet to standardowe zadania w tle programu PowerShell, a nie wystąpienia zaplanowanego zadania. Podobnie jak wszystkie zadania w tle, te zadania są uruchamiane natychmiast, nie podlegają opcjom zadań ani wyzwalaczom zadań, a ich dane wyjściowe nie są zapisywane w katalogu wyjściowym zaplanowanego katalogu zadań.

Start-Job -DefinitionName ProcessJob

Polecenie Unregister-ScheduledJob cmdlet usuwa zaplanowane zadanie ProcessJob i wszystkie zapisane wyniki wystąpień zadań.

Unregister-ScheduledJob ProcessJob

Pojęcia dotyczące zaplanowanych zadań

Zaplanowane zadanie uruchamia polecenia lub skrypt. Zaplanowane zadanie może zawierać wyzwalacze zadań, które uruchamiają zadanie i opcje zadania, które ustawiają warunki uruchamiania zadania.

Wyzwalacz zadania uruchamia zaplanowane zadanie automatycznie. Wyzwalacz zadania może zawierać jednorazowy lub cykliczny harmonogram lub określić zdarzenie, takie jak podczas logowania użytkownika lub uruchamiania systemu Windows. Zaplanowane zadanie może mieć co najmniej jeden wyzwalacz zadania i można tworzyć, dodawać, włączać, wyłączać i pobierać wyzwalacze zadań.

Wyzwalacze zadań są opcjonalne. Zaplanowane zadania można uruchamiać natychmiast przy użyciu polecenia lub przez dodanie parametru Start-Job cmdletRunNow do poleceniaRegister-ScheduledJob.

Opcje zadania ustawiają warunki uruchamiania zaplanowanego zadania. Każde zaplanowane zadanie ma jeden obiekt opcji zadania. Można tworzyć i edytować obiekty opcji zadań i dodawać je do co najmniej jednego zaplanowanego zadania.

Przy każdym uruchomieniu zaplanowanego zadania tworzone jest wystąpienie zadania. Użyj poleceń cmdlet zadań programu PowerShell, aby wyświetlić wystąpienie zadania i zarządzać nim.

Zaplanowane zadania są zapisywane na dysku i używają czasownika cmdlet , Registerzamiast New. Pliki XML znajdują się na komputerze lokalnym w katalogu $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs.

Program PowerShell tworzy katalog dla każdego zaplanowanego zadania i zapisuje polecenia zadania, wyzwalacze zadań, opcje zadań i wyniki zadania w zaplanowanym katalogu zadań. Wyzwalacze zadań i opcje zadań nie są zapisywane na dysku niezależnie. Są one zapisywane w kodzie XML zaplanowanego zadania dla każdego zaplanowanego zadania, z którym są skojarzone.

Zaplanowane zadania, wyzwalacze zadań i opcje zadań są wyświetlane w programie PowerShell jako obiekty. Obiekty są połączone ze sobą, co ułatwia odnajdywanie i używanie ich w poleceniach i skryptach.

Zaplanowane zadania są wyświetlane jako obiekty ScheduledJobDefinition . Obiekt ScheduledJobDefinition ma właściwość JobTriggers zawierającą wyzwalacze zadania zaplanowanego zadania i właściwość Options zawierającą opcje zadania. Obiekty ScheduledJobTriggers i ScheduledJobOptions reprezentujące odpowiednio wyzwalacze zadań i opcje zadań mają właściwość JobDefinition zawierającą zaplanowane zadanie, z którym są skojarzone. To cykliczne połączenie wzajemne ułatwia znajdowanie wyzwalaczy i opcji zaplanowanego zadania oraz znajdowanie, wykonywanie skryptów i wyświetlanie zaplanowanego zadania, z którym jest skojarzony dowolny wyzwalacz zadania lub zadanie.

Zobacz też

about_Scheduled_Jobs_Basics

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

Harmonogram zadań