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-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 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 cmdletpolecenia , 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 , 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 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.

Zobacz też