Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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-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 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-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.
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-Job
DefinitionName 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 cmdlet
RunNow 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 , 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 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.