about_Scheduled_Jobs

Krátký 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é hybridní úlohy PowerShellu na pozadí a úlohy Plánovače úloh.

Podobně jako úlohy na pozadí PowerShellu běží naplánované úlohy asynchronně na pozadí. Instance naplánovaných úloh, které se spouštějí, je možné spravovat pomocí rutin úloh, například Start-Job, Get-Job, Stop-Joba Receive-Job.

Podobně jako úkoly 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, spustit je nebo je používat jako šablony, vytvořit jednorázové nebo opakované plány pro spuštění úloh nebo nastavit podmínky, za kterých se úlohy spouští.

Kromě toho se výsledky plánovaných instancí úloh ukládají na disk ve snadno přístupném formátu a poskytují spuštěný protokol výstupu úlohy. Naplá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.

Tato komplexní a flexibilní sada nástrojů tvoří základní součást mnoha profesionálních IT řešení PowerShellu.

Rutiny naplánované úlohy jsou součástí modulu PSScheduledJob , který je nainstalovaný pomocí PowerShellu. 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 najdete v tématu PSScheduledJob.

Další informace o úlohách na pozadí PowerShellu najdete v tématu about_Jobs.

Další informace o Plánovači úloh naleznete 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é úlohy fungují jenom na naplánovaných úlohách vytvořených v PowerShellu.

Rychlý start

Tento příklad vytvoří naplánovanou úlohu, která se spustí každý den v 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 na 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 ProcessJob. Vstupní parametry určují naplánovanou úlohu, nikoli trigger, protože triggery jsou uloženy 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 ProcessJob , které byly dosud spuštěny. Rutina Get-Job získá naplánované úlohy pouze při importu modulu PSScheduledJob do aktuální relace.

Tip

Všimněte si, že ke správě naplánovaných úloh používáte rutiny naplánované úlohy, ale pomocí rutin úloh můžete spravovat instance naplánovaných ú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 nejnovější instance naplánované úlohy ProcessJob (ID = 51).

Receive-Job -ID 51

I když Receive-Job příkaz nezahrnoval parametr Keep , výsledky úlohy se uloží na disk, dokud je neodstraníte nebo se překročí maximální počet výsledků.

Výsledky úloh už nejsou v této relaci dostupné, ale pokud spustíte novou relaci nebo otevřete nové okno PowerShellu, výsledky úlohy budou znovu dostupné.

Následující příkaz pomocí parametru Start-Job DefinitionName rutiny spustí naplánovanou úlohu ProcessJob.

Úlohy, které jsou spouštěny pomocí rutiny Start-Job , jsou standardní úlohy PowerShellu na pozadí, nikoli instance naplánované úlohy. Stejně jako všechny úlohy na pozadí se tyto úlohy spustí okamžitě, nejsou předmětem možností úlohy ani ovlivněné triggery úloh a jejich výstup se neuloží do výstupního adresáře naplánované úlohy.

Start-Job -DefinitionName ProcessJob

Rutina Unregister-ScheduledJob odstraní naplánovanou úlohu ProcessJob a všechny uložené výsledky instancí úloh.

Unregister-ScheduledJob ProcessJob

Koncepty naplánovaných úloh

Naplánovaná úloha spouští příkazy nebo skript. Naplánovaná úloha může zahrnovat triggery úloh, které spustí úlohu a možnosti úlohy, které nastaví podmínky pro spuštění úlohy.

Trigger úlohy spustí naplánovanou úlohu automaticky. Trigger úlohy může obsahovat jednorázový nebo opakovaný plán nebo zadat událost, například při přihlášení uživatele nebo spuštění Systému Windows. Naplánovaná úloha může mít jednu nebo více aktivačních událostí úlohy 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 cmdletpříkazu nebo přidáním parametru RunNow do Register-ScheduledJob příkazu.

Možnosti úlohy nastavily podmínky pro spuštění naplánované úlohy. Každá naplánovaná úloha má jeden objekt možností úlohy. Objekty možností úlohy můžete vytvářet a upravovat 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 úlohy PowerShellu.

Naplánované úlohy se ukládají na disk a používají příkaz rutiny, Registernikoli 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 v adresáři naplánované úlohy. Triggery úloh a možnosti úloh se neukládají na disk nezávisle. Ukládají se do 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 v PowerShellu zobrazují jako objekty. Objekty jsou propojené, což usnadňuje jejich zjišťování a použití v příkazech a skriptech.

Naplánované úlohy se zobrazují jako objekty ScheduledJobDefinition . ScheduledJobDefinition objekt má JobTriggers vlastnost, která obsahuje triggery úlohy naplánované úlohy a Options vlastnost, která obsahuje možnosti úlohy. Objekty ScheduledJobTriggers a ScheduledJobOptions, které představují triggery úloh a možnosti úlohy, mají vlastnost JobDefinition, která obsahuje naplánovanou úlohu, ke které jsou přidruženy. Díky tomuto rekurzivnímu propojení je snadné najít triggery a možnosti naplánované úlohy a najít, skriptovat a zobrazit naplánovanou úlohu, ke které je přidružená jakákoli aktivační událost úlohy nebo možnost úlohy.

Viz také