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

Viz také