Informace o naplánovaných úlohách
Stručný popis
Popisuje naplánované úlohy a vysvětluje, jak používat a spravovat naplánované úlohy v PowerShellu a v Plánovači úloh.
Dlouhý popis
Naplánované úlohy PowerShellu jsou užitečným hybridem úloh PowerShellu na pozadí a úloh Plánovače úloh.
Stejně jako úlohy PowerShellu na pozadí i naplánované úlohy běží asynchronně na pozadí. Instance naplánovaných úloh, které se spustily, je možné spravovat pomocí rutin úloh, jako Start-Job
jsou , Get-Job
Stop-Job
, a Receive-Job
.
Podobně jako úlohy Plánovače úloh se naplánované úlohy ukládají na disk. Úlohy můžete zobrazit a spravovat v Plánovači úloh, podle potřeby je povolit a zakázat, spouštět je nebo používat jako šablony, vytvořit jednorázové nebo opakované plány pro spouštění úloh nebo nastavit podmínky, za kterých se úlohy spustí.
Kromě toho se výsledky naplánovaných instancí úloh ukládají na disk ve snadno přístupném formátu, který poskytuje spuštěný protokol výstupu úlohy. Plánované úlohy se dodávají s přizpůsobenou sadou rutin pro jejich správu. Rutiny umožňují vytvářet, upravovat, spravovat, zakazovat a znovu povolovat naplánované úlohy, triggery úloh a možnosti úloh.
Díky této komplexní a flexibilní sadě nástrojů jsou naplánované úlohy nezbytnou součástí mnoha profesionálních řešení POWERShell IT.
Rutiny naplánované úlohy jsou součástí modulu PSScheduledJob , který se instaluje s PowerShellem. Tento modul byl představen v PowerShellu 3.0 a funguje v PowerShellu 3.0 a novějších verzích PowerShellu. Další informace o rutinách obsažených v modulu PSScheduledJob .
Další informace o úlohách PowerShellu na pozadí najdete v tématu about_Jobs.
Další informace o Plánovači úloh najdete v tématu Plánovač úloh.
Poznámka
Naplánované úlohy PowerShellu můžete zobrazit a spravovat v Plánovači úloh. Úlohy PowerShellu a rutiny naplánovaných úloh fungují jenom u naplánovaných úloh vytvořených v PowerShellu.
Rychlý start
Tento příklad vytvoří naplánovanou úlohu, která se spustí každý den ve 3:00 a spustí rutinu Get-Process
. Úloha se spustí i v případě, že počítač běží na bateriích.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
Rutina Get-ScheduledJob
získá naplánované úlohy v místním počítači.
Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Get-JobTrigger
získá triggery úlohy úlohy úlohy ProcessJob. Vstupní parametry určují naplánovanou úlohu, ne trigger, protože triggery se ukládají v naplánované úloze.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
Tento příklad používá ContinueIfGoingOnBattery parametr Set-ScheduledJob
rutiny ke změně StopIfGoingOnBatteries vlastnost 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
Rutina Get-ScheduledJob
získá naplánovanou úlohu ProcessJob .
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Rutina Get-Job
získá všechny instance naplánované úlohy úlohy ProcessJob , které byly dosud spuštěny. Rutina Get-Job
získá naplánované úlohy pouze v době, kdy je modul PSScheduledJob importován do aktuální relace.
Tip
Všimněte si, že ke správě plánovaných úloh používáte rutiny naplánovaných úloh, ale ke správě instancí plánovaných úloh používáte rutiny úloh.
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
Rutina Receive-Job
získá výsledky poslední instance naplánované úlohy ProcessJob (ID = 51).
Receive-Job -ID 51
I když Receive-Job
příkaz neobsahoval parametr Keep , výsledky úlohy se uloží na disk, dokud je neodstraníte nebo dokud se nepřekročí maximální počet výsledků.
Výsledky úlohy už nejsou v této relaci k dispozici, ale pokud spustíte novou relaci nebo otevřete nové okno PowerShellu, budou výsledky úlohy znovu k dispozici.
Následující příkaz pomocí parametru DefinitionName rutiny Start-Job
spustí naplánovanou úlohu ProcessJob .
Úlohy spuštěné pomocí rutiny jsou standardní úlohy PowerShellu Start-Job
na pozadí, nikoli instance naplánované úlohy. Stejně jako všechny úlohy na pozadí se tyto úlohy spustí okamžitě, nevztahují se na ně možnosti úloh ani na ně nemají vliv triggery úloh a jejich výstup se neuloží do výstupního adresáře naplánovaného adresáře úloh.
Start-Job -DefinitionName ProcessJob
Rutina Unregister-ScheduledJob
odstraní naplánovanou úlohu úlohy ProcessJob a všechny uložené výsledky jejích instancí úloh.
Unregister-ScheduledJob ProcessJob
Koncepty naplánovaných úloh
Naplánovaná úloha spustí příkazy nebo skript. Naplánovaná úloha může zahrnovat triggery úloh, které spustí úlohu, a možnosti úlohy, které nastavují podmínky pro spuštění úlohy.
Trigger úlohy automaticky spustí naplánovanou úlohu. Trigger úlohy může zahrnovat jednorázový nebo opakovaný plán nebo určit událost, například když se uživatel přihlásí nebo spustí Windows. Naplánovaná úloha může mít jeden nebo více triggerů úloh a můžete vytvářet, přidávat, povolovat, zakazovat a získávat triggery úloh.
Triggery úloh jsou volitelné. Naplánované úlohy můžete spustit okamžitě pomocí Start-Job cmdlet
příkazu nebo přidáním parametru RunNow do příkazu Register-ScheduledJob
.
Možnosti úlohy nastavily podmínky pro spuštění naplánované úlohy. Každá naplánovaná úloha má jeden objekt možností úlohy. Můžete vytvářet a upravovat objekty možností úloh a přidávat je do jedné nebo více naplánovaných úloh.
Při každém spuštění naplánované úlohy se vytvoří instance úlohy. K zobrazení a správě instance úlohy použijte rutiny úloh PowerShellu.
Naplánované úlohy se ukládají na disk a místo příkazu používají příkaz Register
rutiny New
. Soubory XML jsou umístěny v místním počítači v adresáři $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
.
PowerShell vytvoří adresář pro každou naplánovanou úlohu a uloží příkazy úlohy, triggery úloh, možnosti úlohy a výsledky úlohy do adresáře naplánovaných úloh. Triggery úloh a možnosti úloh se neukládají na disk nezávisle na sobě. Ukládají se do souboru XML naplánované úlohy každé naplánované úlohy, ke které jsou přidruženy.
Naplánované úlohy, triggery úloh a možnosti úloh se zobrazí v PowerShellu jako objekty. Objekty jsou vzájemně propojené, což usnadňuje jejich zjišťování a použití v příkazech a skriptech.
Naplánované úlohy se zobrazí jako objekty ScheduledJobDefinition . ScheduledJobDefinition Objekt má JobTriggers vlastnost, která obsahuje triggery úlohy naplánované úlohy a Options vlastnost, která obsahuje možnosti úlohy. ScheduledJobTriggers a ScheduledJobOptions objekty, které představují triggery úlohy a možnosti úlohy, každý mají JobDefinition vlastnost, která obsahuje naplánovanou úlohu, se kterou jsou přidruženy. Toto rekurzivní propojení usnadňuje vyhledání triggerů a možností naplánované úlohy a vyhledání, skriptování a zobrazení naplánované úlohy, ke které je přidružená kterákoli aktivační událost úlohy nebo možnost úlohy.