about_Scheduled_Jobs
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 przydatna hybryda zadań w tle programu PowerShell i zadań harmonogramu 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-Job
i 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 zgodnie z potrzebami, uruchamiać je lub używać jako szablonów, ustanawiać jednorazowe lub cykliczne harmonogramy uruchamiania zadań lub ustawiać warunki, w których uruchamiane są zadania.
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, zobacz 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 w przypadku zaplanowanych zadań utworzonych w programie PowerShell.
Szybki start
W tym przykładzie tworzone jest zaplanowane zadanie, które jest uruchamiane codziennie o godzinie 3:00 i uruchamia 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-ScheduledJob
ContinueIfGoingOnBattery 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.
Napiwek
Zwróć uwagę, że polecenia cmdlet zaplanowanego zadania służą do zarządzania zaplanowanymi zadaniami, ale polecenia cmdlet zadań służą do zarządzania wystąpieniami zaplanowanych 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 ProcesuJob (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 przekroczenia maksymalnej liczby wyników.
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-Job
DefinitionName polecenia cmdlet, aby uruchomić zaplanowane zadanie ProcesuJob.
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 obejmować 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, na przykład gdy użytkownik loguje się lub uruchamia system 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 Start-Job cmdlet
polecenia , lub dodając parametr RunNow do polecenia Register-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 , Register
zamiast 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 katalogu zaplanowanych 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 , która zawiera wyzwalacze zadania zaplanowanego zadania i właściwość Options , która zawiera opcje zadania. Obiekty ScheduledJobTriggers i ScheduledJobOptions reprezentujące odpowiednio wyzwalacze zadań i opcje zadania mają właściwość JobDefinition zawierającą zaplanowane zadanie, z którym są skojarzone. To cykliczne wzajemne połączenie ułatwia znajdowanie wyzwalaczy i opcji zaplanowanego zadania oraz znajdowanie, wykonywanie skryptów i wyświetlanie zaplanowanego zadania, z którym jest skojarzona dowolna opcja wyzwalacza lub zadania.