about_Scheduled_Jobs_Basics
Krátký popis
Vysvětluje, jak vytvářet a spravovat naplánované úlohy.
Dlouhý popis
Tento dokument ukazuje, jak provádět základní úlohy vytváření a správy naplánovaných úloh. Informace o pokročilejších úkolech najdete v tématu about_Scheduled_Jobs_Advanced.
Další informace o rutinách obsažených v modulu PSScheduledJob najdete v tématu PSScheduledJob.
Jak vytvořit naplánovanou úlohu
K vytvoření naplánované úlohy použijte rutinu Register-ScheduledJob
. Rutina vyžaduje název a příkazy nebo skript, které úloha spouští. Úlohu můžete spustit okamžitě přidáním parametru RunNow , nebo vytvořit trigger úlohy a nastavit možnosti úlohy při vytváření úlohy nebo upravit existující úlohu.
Chcete-li vytvořit úlohu, která spouští skript, pomocí parametru FilePath zadejte cestu k souboru skriptu. K vytvoření úlohy, která spouští příkazy, použijte parametr ScriptBlock .
Rutina Register-ScheduledJob
vytvoří ProcessJob, který spustí Get-Process
příkaz. Tato naplánovaná úloha má výchozí možnosti úlohy a neaktivuje se žádná úloha.
Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
Vytvoření triggeru úlohy
Úloha spouští naplánovanou úlohu automaticky. Triggerem úlohy může být jednorázový nebo opakovaný plán nebo událost, například když se uživatel přihlásí nebo se spustí Windows. Každá úloha může mít nulovou, jednu nebo více aktivačních událostí úlohy.
K vytvoření triggeru úlohy použijte rutinu New-JobTrigger
. Následující příkaz vytvoří trigger úlohy, který spustí úlohu každé pondělí a čtvrtek v 5:00.
Příkaz uloží trigger úlohy do $T
proměnné.
$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
Triggery úloh jsou volitelné. Naplánovanou úlohu můžete kdykoli spustit přidáním parametru RunNow do Register-ScheduledJob
příkazu nebo pomocí Start-Job
rutin.
Přidání triggeru úlohy
Když do naplánované úlohy přidáte trigger úlohy, přidá se aktivační událost úlohy do souboru XML naplánované úlohy pro naplánovanou úlohu a stane se součástí naplánované úlohy.
Trigger úlohy můžete přidat do naplánované úlohy při vytváření naplánované úlohy nebo úpravě existující úlohy. Aktivační událost úlohy naplánované úlohy můžete kdykoli změnit.
PowerShell používá některé ze stejných aktivačních událostí úlohy, které plánovač úloh používá. Podrobné informace o triggerech úloh najdete v tématu nápovědy pro rutinu New-JobTrigger .
Následující příklad používá k vytvoření $JobParms
splatting, které jsou hodnoty parametrů předány rutině Register-ScheduledJob
. Další informace najdete v tématu about_Splatting.md.
Používá Register-ScheduledJob
@JobParms
se k vytvoření naplánované úlohy. Pomocí parametru Trigger určuje aktivační událost úlohy v $T
proměnné.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Command}
Trigger = $T
}
Register-ScheduledJob @JobParms
Trigger úlohy můžete také kdykoli přidat do existující naplánované úlohy. Rutina Add-JobTrigger
přidá trigger úlohy do $T
proměnné do naplánované úlohy ProcessJob .
Add-JobTrigger -Name ProcessJob -Trigger $T
V důsledku toho trigger úlohy spustí každou pondělí a čtvrtek v 5:00 automaticky procesovou úlohu .
Jak získat trigger úlohy
K získání triggeru úlohy naplánované úlohy použijte rutinu Get-JobTrigger
. Pomocí parametrů Name, ID a InputObject určete naplánovanou úlohu, nikoli trigger úlohy.
Get-JobTrigger
získá trigger úlohy ProcessJob.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
Jak vytvořit možnosti úlohy
Možnosti úlohy stanoví podmínky pro spuštění a spuštění úlohy. Každá úloha má výchozí možnosti úlohy, pokud je nezměníte. Vzhledem k tomu, že možnosti úlohy můžou zabránit spuštění úlohy v naplánovaném čase, je důležité porozumět možnostem úlohy a pečlivě je používat.
PowerShell používá stejné možnosti úlohy jako Plánovač úloh. Podrobné informace o možnostech úlohy najdete v tématu nápovědy pro New-ScheduledJobOption.
Možnosti úlohy jsou uloženy v souboru XML naplánované úlohy. Možnosti úlohy můžete nastavit při vytváření naplánované úlohy nebo je kdykoli změnit.
Rutina New-ScheduledJobOption
vytvoří možnost naplánované úlohy, ve které je možnost naplánované úlohy WakeToRun nastavená na Hodnotu True. Možnost WakeToRun spustí naplánovanou úlohu i v případě, že je počítač ve stavu Spánku nebo Hibernace v naplánovaném čase spuštění. Příkaz uloží možnosti úlohy do $O
proměnné.
$O = New-ScheduledJobOption -WakeToRun
Jak získat možnosti úlohy
Pokud chcete získat možnosti úlohy naplánované úlohy, použijte rutinu Get-ScheduledJobOption
. Pomocí parametrů Name, ID a InputObject určete naplánovanou úlohu, nikoli možnosti úlohy.
Get-ScheduledJobOption
získá možnosti úlohy 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 změnit možnosti úlohy
Možnosti úlohy naplánované úlohy můžete změnit při vytváření naplánované úlohy nebo úpravě existující úlohy.
Splatted $JobParms
se předá rutině Add-JobTrigger
pro vytvoření úlohy procesu. Používá parametr ScheduledJobOption k určení možností úlohy v $O
proměnné.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
ScheduledJobOption = $O
}
Add-JobTrigger @JobParms
Možnosti úlohy můžete kdykoli změnit na existující naplánovanou úlohu.
Následující příkaz pomocí rutiny Set-ScheduledJobOption
změní hodnotu WakeToRun možnosti ProcessJob scheduledJob na True.
Rutiny Set
v modulu PSScheduledJob , jako je například rutina Set-ScheduledJobOption
, nemají parametry Name nebo ID . Pomocí parametru InputObject můžete určit možnosti naplánované úlohy nebo přeskakovat naplánovanou úlohu z Get-ScheduledJobOption
rutiny do Set-ScheduledJobOption
.
Tento příklad používá rutinu Get-ScheduledJob
k získání úlohy ProcessJob. Pomocí rutiny Get-ScheduledJobOption
získá možnosti úlohy v ProcessJob a rutina Set-ScheduledJobOption
změnit možnost WakeToRun úlohy v ProcessJob na True.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
Set-ScheduledJobOption -WakeToRun
Jak získat naplánované instance úloh
Při spuštění naplánované úlohy vytvoří PowerShell instanci úlohy, která se podobá standardní úloze na pozadí PowerShellu. Můžete použít rutiny úlohy, například Get-Job
Stop-Job
a Receive-Job
spravovat instance úloh.
Poznámka:
Pokud chcete rutiny úlohy použít u instancí plánovaných úloh, musí se modul PSScheduledJob importovat do relace. Pokud chcete importovat modul PSScheduledJob , zadejte Import-Module PSScheduledJob
nebo použijte jakoukoli rutinu naplánované úlohy, například Get-ScheduledJob
.
Pokud chcete získat všechny instance naplánovaných úloh PowerShellu a všechny aktivní standardní úlohy, použijte rutinu Get-Job
. Rutina Import-Module
naimportuje modul PSScheduledJob a Get-Job
získá úlohy v místním počítači.
Import-Module PSScheduledJob
Get-Job
Get-Job
získá instance ProcessJob v místním počítači.
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
Výchozí zobrazení nezobrazuje čas spuštění, který obvykle rozlišuje instance stejné naplánované úlohy.
Rutina Get-Job
odesílá objekty do kanálu. Rutina Format-Table
zobrazí vlastnosti Name, ID a BeginTime naplánované úlohy.
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
Získání výsledků naplánované úlohy
Pokud chcete získat výsledky instance naplánované úlohy, použijte rutinu Receive-Job
.
Poznámka:
Pokud chcete použít rutiny Úlohy u instancí plánovaných úloh, musí se modul PSScheduledJob importovat do relace. Pokud chcete importovat modul PSScheduledJob , zadejte Import-Module PSScheduledJob
nebo použijte jakoukoli rutinu naplánované úlohy, například Get-ScheduledJob
.
Tento příklad získá výsledky nejnovější instance naplánované úlohy ProcessJob (ID = 51).
Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep
Výsledky plánovaných úloh se ukládají na disk, takže parametr Keep Receive-Job
není povinný. Bez parametru Keep ale můžete získat výsledky naplánované úlohy pouze jednou v každé relaci PowerShellu. Pokud chcete spustit novou relaci PowerShellu, zadejte PowerShell
nebo otevřete nové okno PowerShellu.