about_Scheduled_Jobs_Advanced
Krátký popis
Vysvětluje pokročilá témata naplánované úlohy, včetně struktury souborů, která tvoří základ naplánovaných úloh.
Dlouhý popis
Další informace o rutinách obsažených v modulu PSScheduledJob najdete v tématu PSScheduledJob.
Adresáře a soubory naplánovaných úloh
Naplánované úlohy PowerShellu jsou úlohy PowerShellu i úlohy plánovače úloh. Každá naplánovaná úloha je zaregistrována v Plánovači úloh a uložena na disku ve formátu XML serializace rozhraní Microsoft .NET Framework.
Když vytvoříte naplánovanou úlohu, PowerShell vytvoří adresář pro naplánovanou úlohu v $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
adresáři na místním počítači. Název adresáře je stejný jako název úlohy.
Následuje ukázkový adresář ScheduledJobs .
Get-ChildItem $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
Directory: C:\Users\User01\AppData\Local
\Microsoft\Windows\PowerShell\ScheduledJobs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/29/2011 10:03 AM ArchiveProjects
d---- 9/30/2011 1:18 PM Inventory
d---- 10/20/2011 9:15 AM Backup-Scripts
d---- 11/7/2011 10:40 AM ProcessJob
d---- 11/2/2011 10:25 AM SecureJob
d---- 9/27/2011 1:29 PM Test-HelpFiles
d---- 9/26/2011 4:22 PM DeployPackage
Každá naplánovaná úloha má svůj vlastní adresář. Adresář obsahuje soubor XML naplánované úlohy a podadresář Výstup .
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/1/2011 3:00 PM Output
-a--- 11/1/2011 3:43 PM 7281 ScheduledJobDefinition.xml
Výstupní adresář pro naplánovanou úlohu obsahuje historii spuštění. Pokaždé, když trigger úlohy spustí naplánovanou úlohu, Vytvoří PowerShell ve výstupním adresáři časovým razítkem pojmenovaný adresář. Adresář časového razítka obsahuje výsledky úlohy v souboru Results.xml a stav úlohy v souboru Status.xml .
Následující příkaz ukazuje adresáře historie provádění pro naplánovanou úlohu ProcessJob .
$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft
\Windows\PowerShell\ScheduledJobs\ProcessJob\Output
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/2/2011 3:00 AM 20111102-030002-260
d---- 11/3/2011 3:00 AM 20111103-030002-277
d---- 11/4/2011 3:00 AM 20111104-030002-209
d---- 11/5/2011 3:00 AM 20111105-030002-251
d---- 11/6/2011 3:00 AM 20111106-030002-174
d---- 11/7/2011 12:00 AM 20111107-000001-914
d---- 11/7/2011 3:00 AM 20111107-030002-376
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output\20111102-030002-260
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/2/2011 3:00 AM 581106 Results.xml
-a--- 11/2/2011 3:00 AM 9451 Status.xml
Můžete otevřít a prozkoumat ScheduledJobDefinition.xml, Results.xml a Status.xml soubory nebo použít rutinu Select-XML
k analýze souborů.
Upozorňující
Neupravujte soubory XML. Pokud některý soubor XML obsahuje neplatný KÓD XML, PowerShell odstraní naplánovanou úlohu a její historii spuštění, včetně výsledků úlohy.
Okamžitě spustit naplánovanou úlohu
Naplánovanou úlohu můžete spustit okamžitě jedním ze dvou způsobů:
- Spuštěním rutiny
Start-Job
spusťte jakoukoli naplánovanou úlohu. - Přidejte do
Register-ScheduledJob
příkazu parametr RunNow, který spustí úlohu hned po spuštění příkazu.
Ú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í úloh ani triggerů úloh. Výstup úlohy se neuloží do výstupního adresáře naplánované úlohy.
Následující příkaz pomocí parametru Start-Job
DefinitionName rutiny spustí naplánovanou úlohu ProcessJob.
Start-Job -DefinitionName ProcessJob
Ke správě úlohy a získání výsledků úlohy použijte rutiny úlohy. Další informace o rutinách úloh najdete v tématu about_Jobs.
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
.
Přejmenování naplánované úlohy
Pokud chcete přejmenovat naplánovanou úlohu, použijte parametr Name rutiny Set-ScheduledJob
. Když přejmenujete naplánovanou úlohu, PowerShell změní název naplánované úlohy a adresáře naplánované úlohy. Nezmění ale názvy instancí naplánované úlohy, které už byly spuštěny.
Získání počátečních a koncových časů
Chcete-li získat data a časy zahájení a ukončení instancí úloh, použijte vlastnosti PSBeginTime a PSEndTime objektu ScheduledJob, který Get-Job
vrací naplánované úlohy.
Následující příklad používá parametr Format-Table
Property rutiny k zobrazení vlastností PSBeginTime a PSEndTime každé instance úlohy v tabulce. Počítaná vlastnost s názvem Popisek zobrazuje uplynulý čas každé instance úlohy.
Get-job -Name UpdateHelpJob |
Format-Table -Property ID, PSBeginTime, PSEndTime,
@{Label="Elapsed Time";Expression={$.PsEndTime - $.PSBeginTime}}
Id PSBeginTime PSEndTime Elapsed Time
-- ----------- --------- ------------
2 11/3/2011 3:00:01 AM 11/3/2011 3:00:39 AM 00:00:38.0053854
3 11/4/2011 3:00:02 AM 11/4/2011 3:01:01 AM 00:00:59.1188475
4 11/5/2011 3:00:02 AM 11/5/2011 3:00:50 AM 00:00:48.3692034
5 11/6/2011 3:00:01 AM 11/6/2011 3:00:54 AM 00:00:52.8013036
6 11/7/2011 3:00:01 AM 11/7/2011 3:00:38 AM 00:00:37.1930350
7 11/8/2011 3:00:01 AM 11/8/2011 3:00:57 AM 00:00:56.2570556
8 11/9/2011 3:00:03 AM 11/9/2011 3:00:55 AM 00:00:51.8142222
9 11/10/2011 3:00:02 AM 11/10/2011 3:00:42 AM 00:00:40.7195954
Správa historie provádění
Můžete určit počet výsledků instance úlohy, které jsou uloženy pro každou naplánovanou úlohu, a odstranit historii spuštění a uložené výsledky úlohy jakékoli naplánované úlohy.
ExecutionHistoryLength vlastnost naplánované úlohy určuje, kolik výsledků instance úlohy jsou uloženy pro naplánovanou úlohu. Pokud počet uložených výsledků překročí hodnotu ExecutionHistoryLength vlastnost, PowerShell odstraní výsledky nejstarší instance, aby se uvolnil prostor pro výsledky nejnovější instance.
PowerShell ve výchozím nastavení ukládá historii spouštění a výsledky 32 instancí každé naplánované úlohy. Pokud chcete tuto hodnotu změnit, použijte parametry MaxResultCount v Register-ScheduledJob
rutinách Set-ScheduledJob
.
Pokud chcete odstranit historii provádění a všechny výsledky pro naplánovanou úlohu, použijte parametr ClearExecutionHistory rutiny Set-ScheduledJob
. Odstraněním této historie spouštění nezabráníte PowerShellu v ukládání výsledků nových instancí naplánované úlohy.
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. Příkaz používá parametr MaxResultCount s hodnotou 12 k uložení pouze 12 nejnovějších výsledků instance úlohy naplánované úlohy.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
MaxResultCount = "12"
}
Register-ScheduledJob @JobParms
Následující příkaz používá parametr Set-ScheduledJob
MaxResultCount rutiny ke zvýšení počtu uložených výsledků instance na 15.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15
Následující příkaz odstraní historii spuštění a aktuální uložené výsledky naplánované úlohy ProcessJob .
Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory
Následující příkaz načte hodnoty vlastností name a ExecutionHistoryLength všech naplánovaných úloh v počítači a zobrazí je v tabulce.
Get-ScheduledJob |
Format-Table -Property Name, ExecutionHistoryLength -AutoSize