Sdílet prostřednictvím


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

Viz také