about_Scheduled_Jobs_Basics

Krótki opis

W tym artykule wyjaśniono, jak tworzyć zaplanowane zadania i zarządzać nimi.

Długi opis

W tym dokumencie pokazano, jak wykonywać podstawowe zadania tworzenia zaplanowanych zadań i zarządzania nimi. Aby uzyskać więcej informacji na temat bardziej zaawansowanych zadań, zobacz about_Scheduled_Jobs_Advanced.

Aby uzyskać więcej informacji na temat poleceń cmdlet zawartych w module PSScheduledJob, zobacz PSScheduledJob.

Jak utworzyć zaplanowane zadanie

Aby utworzyć zaplanowane zadanie, użyj Register-ScheduledJob polecenia cmdlet . Polecenie cmdlet wymaga nazwy i poleceń lub skryptu, które jest uruchamiane przez zadanie. 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.

Aby utworzyć zadanie uruchamiające skrypt, użyj parametru FilePath , aby określić ścieżkę do pliku skryptu. Aby utworzyć zadanie uruchamiające polecenia, użyj parametru ScriptBlock .

Polecenie Register-ScheduledJob cmdlet tworzy obiekt ProcessJob, który uruchamia Get-Process polecenie. To zaplanowane zadanie ma domyślne opcje zadania i nie ma wyzwalacza zadania.

Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id         Name            Triggers        Command       Enabled
--         ----            --------        -------       -------
8          ProcessJob      {}              Get-Process   True

Jak utworzyć wyzwalacz zadania

Wyzwalacze zadania uruchamiają zaplanowane zadanie automatycznie. Wyzwalacz zadania może być jednorazowy lub cykliczny lub zdarzenie, na przykład gdy użytkownik loguje się lub uruchamia system Windows. Każde zadanie może mieć wyzwalacze zera, jednego lub wielu zadań.

Aby utworzyć wyzwalacz zadania, użyj New-JobTrigger polecenia cmdlet . Następujące polecenie tworzy wyzwalacz zadania, który uruchamia zadanie co poniedziałek i czwartek o 5:00. Polecenie zapisuje wyzwalacz zadania w zmiennej $T .

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

Wyzwalacze zadań są opcjonalne. Zaplanowane zadanie można uruchomić w dowolnym momencie, dodając parametr RunNow do polecenia Register-ScheduledJob lub za pomocą Start-Job poleceń cmdlet.

Jak dodać wyzwalacz zadania

Po dodaniu wyzwalacza zadania do zaplanowanego zadania wyzwalacz zadania jest dodawany do pliku XML zaplanowanego zadania dla zaplanowanego zadania i staje się częścią zaplanowanego zadania.

Wyzwalacz zadania można dodać do zaplanowanego zadania podczas tworzenia zaplanowanego zadania lub edytować istniejące zadanie. Wyzwalacz zadania zaplanowanego można zmienić w dowolnym momencie.

Program PowerShell używa niektórych z tych samych wyzwalaczy zadań używanych przez harmonogram zadań. Aby uzyskać szczegółowe informacje o wyzwalaczach zadań, zobacz temat pomocy dla polecenia cmdlet New-JobTrigger .

W poniższym przykładzie użyto splattingu, aby utworzyć $JobParms wartości parametrów, które są przekazywane do Register-ScheduledJob polecenia cmdlet. Aby uzyskać więcej informacji, zobacz about_Splatting.md. @JobParms Używa Register-ScheduledJob metody do utworzenia zaplanowanego zadania. Używa parametru Wyzwalacz, aby określić wyzwalacz zadania w zmiennej $T .

$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. Polecenie Add-JobTrigger cmdlet dodaje wyzwalacz zadania w zmiennej $T do zaplanowanego zadania ProcesuJob .

Add-JobTrigger -Name ProcessJob -Trigger $T

W rezultacie wyzwalacz zadania uruchamia zadanie ProcessJob automatycznie co poniedziałek i czwartek o 5:00.

Jak uzyskać wyzwalacz zadania

Aby uzyskać wyzwalacz zadania zaplanowanego, użyj Get-JobTrigger polecenia cmdlet . Użyj parametrów Name, ID i InputObject , aby określić zaplanowane zadanie, a nie wyzwalacz zadania.

Get-JobTrigger pobiera wyzwalacz zadania ProcessJob.

Get-JobTrigger -Name ProcessJob
Id   Frequency       Time                   DaysOfWeek              Enabled
--   ---------       ----                   ----------              -------
1    Weekly          11/7/2011 5:00:00 AM   {Monday, Thursday}      True

Jak utworzyć opcje zadania

Opcje zadań określają warunki uruchamiania i uruchamiania zadania. Każde zadanie ma domyślne opcje zadania, chyba że zostaną zmienione. Ponieważ opcje zadań mogą uniemożliwić uruchomienie zadania w zaplanowanym czasie, ważne jest, aby zrozumieć opcje zadania i uważnie ich używać.

Program PowerShell używa tych samych opcji zadań, których używa harmonogram zadań. Aby uzyskać szczegółowe informacje na temat opcji zadania, zobacz temat pomocy dotyczący polecenia New-ScheduledJobOption.

Opcje zadania są przechowywane w pliku XML zaplanowanego zadania. Opcje zadań można ustawić podczas tworzenia zaplanowanego zadania lub zmieniania ich w dowolnym momencie.

Polecenie New-ScheduledJobOption cmdlet tworzy zaplanowaną opcję zadania, w której opcja Zaplanowane zadanie WakeToRun jest ustawiona na wartość True. Opcja WakeToRun uruchamia zaplanowane zadanie, nawet jeśli komputer jest w stanie Uśpienie lub Hibernacji w zaplanowanym czasie rozpoczęcia. Polecenie zapisuje opcje zadania w zmiennej $O .

$O = New-ScheduledJobOption -WakeToRun

Jak uzyskać opcje zadania

Aby uzyskać opcje zadania zaplanowanego zadania, użyj Get-ScheduledJobOption polecenia cmdlet . Użyj parametrów Name, ID i InputObject , aby określić zaplanowane zadanie, a nie opcje zadania.

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

Opcje zadania zaplanowanego można zmienić podczas tworzenia zaplanowanego zadania lub edytowania istniejącego zadania.

Splatted $JobParms jest przekazywany do Add-JobTrigger polecenia cmdlet w celu utworzenia zadania procesu. Używa parametru ScheduledJobOption , aby określić opcje zadania w zmiennej $O .

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  ScheduledJobOption = $O
}

Add-JobTrigger @JobParms

Można również w dowolnym momencie zmienić opcje zadania na istniejące zaplanowane zadanie. Następujące polecenie używa Set-ScheduledJobOption polecenia cmdlet, aby zmienić wartość opcji WakeToRun zadania ProcessJob scheduledJob na True.

Polecenia Set cmdlet w module PSScheduledJob , takie jak Set-ScheduledJobOption polecenie cmdlet, nie mają parametrów Name ani ID . Możesz użyć parametru InputObject , aby określić opcje zaplanowanego zadania lub potok zaplanowanego zadania z Get-ScheduledJobOption polecenia cmdlet do Set-ScheduledJobOption.

W tym przykładzie użyto Get-ScheduledJob polecenia cmdlet do pobrania zadania ProcessJob. Używa Get-ScheduledJobOption polecenia cmdlet , aby uzyskać opcje zadania w obiekcie ProcessJob i Set-ScheduledJobOption polecenie cmdlet, aby zmienić opcję zadania WakeToRun w obiekcie ProcessJob na True.

Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
 Set-ScheduledJobOption -WakeToRun

Jak pobrać zaplanowane wystąpienia zadań

Po uruchomieniu zaplanowanego zadania program PowerShell tworzy wystąpienie zadania podobne do standardowego zadania w tle programu PowerShell. Możesz użyć poleceń cmdlet zadań, takich jak Get-Job, Stop-Job i Receive-Job do zarządzania wystąpieniami zadań.

Uwaga

Aby użyć poleceń cmdlet zadania w wystąpieniach zaplanowanych zadań, moduł PSScheduledJob musi zostać zaimportowany do sesji. Aby zaimportować moduł PSScheduledJob , wpisz Import-Module PSScheduledJob lub użyj dowolnego zaplanowanego polecenia cmdlet zadania, takiego jak Get-ScheduledJob.

Aby pobrać wszystkie wystąpienia zaplanowanych zadań programu PowerShell i wszystkie aktywne zadania standardowe, użyj Get-Job polecenia cmdlet . Polecenie Import-Module cmdlet importuje moduł PSScheduledJob i Get-Job pobiera zadania na komputerze lokalnym.

Import-Module PSScheduledJob
Get-Job

Get-Job pobiera wystąpienia zadania ProcessJob na komputerze lokalnym.

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 zazwyczaj rozróżnia wystąpienia tego samego zaplanowanego zadania.

Polecenie Get-Job cmdlet wysyła obiekty w dół potoku. Polecenie Format-Table cmdlet wyświetla właściwości Name, ID i BeginTime zaplanowanego zadania.

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

Pobieranie zaplanowanych wyników zadania

Aby uzyskać wyniki wystąpienia zaplanowanego zadania, użyj Receive-Job polecenia cmdlet .

Uwaga

Aby użyć poleceń cmdlet zadania w wystąpieniach zaplanowanych zadań, moduł PSScheduledJob musi zostać zaimportowany do sesji. Aby zaimportować moduł PSScheduledJob , wpisz Import-Module PSScheduledJob lub użyj dowolnego zaplanowanego polecenia cmdlet zadania, takiego jak Get-ScheduledJob.

Te przykłady pobierają wyniki najnowszego wystąpienia zaplanowanego zadania ProcesuJob (identyfikator = 51).

Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep

Wyniki zaplanowanych zadań są zapisywane na dysku, więc parametr Receive-Job Keep nie jest wymagany. Jednak bez parametru Keep można uzyskać wyniki zaplanowanego zadania tylko raz w każdej sesji programu PowerShell. Aby rozpocząć nową sesję programu PowerShell, wpisz PowerShell lub otwórz nowe okno programu PowerShell.

Zobacz też