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ým hybridem úloh PowerShellu na pozadí a úloh Plánovače úloh.

Stejně jako úlohy PowerShellu na pozadí se naplánované úlohy spouští asynchronně na pozadí. Instance naplánovaných úloh, které byly spuštěny, se dají spravovat pomocí rutin úloh, jako Start-Jobjsou , Get-JobStop-Job, a Receive-Job.

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

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. 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.

Díky této komplexní a flexibilní sadě nástrojů jsou naplánované úlohy nezbytnou součástí mnoha profesionálních řešení POWERShellu IT.

Rutiny naplánovaných úloh jsou součástí modulu PSScheduledJob , který je nainstalovaný s PowerShellem. Tento modul byl zaveden 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 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 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 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ě 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 neobsahuje parametr Keep , výsledky úlohy se uloží na disk, dokud je neodstraníte nebo dokud nebude překročen maximální počet výsledků.

Výsledky úloh 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 použije parametr DefinitionName rutiny Start-Job ke spuštění naplánované úlohy ProcessJob .

Úlohy spouštěné pomocí Start-Job rutiny 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 nebo ovlivněné 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 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. Plá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 spustí naplánovanou úlohu automaticky. 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 se 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 cmdletpříkazu , nebo přidáním parametru RunNow do příkazu Register-ScheduledJob .

Možnosti úlohy nastaví 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 rutiny se používají příkaz Registerrutiny 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. Jsou uloženy v kódu 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 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 úloh naplánované úlohy a Options vlastnost, která obsahuje možnosti úlohy. ScheduledJobTriggers a ScheduledJobOptions objekty, které představují triggery úloh a možnosti úlohy, mají vlastnost JobDefinition, která obsahuje naplánovanou úlohu, ke které 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á jakákoli aktivační událost úlohy nebo možnost úlohy.

Viz také