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.