Spuštění úlohy plánovače po dokončení další úlohy

V Plánovači úloh systému Windows (Plánovač úloh) je možné spouštět úkoly jak podle plánu, tak i když se v protokolu objeví konkrétní událost (popsaná v článku „Spouštěče událostí ve Windows“). V tomto článku si ukážeme, jak implementovat mechanismus, který implementuje automatické spuštění úlohy plánovače po dokončení jiné úlohy. Podívejme se na zjednodušený algoritmus pro nastavení závislostí pro spouštění úloh plánovače, které můžete přizpůsobit svému úkolu.

V mém případě bylo po dokončení jednoho skriptu nutné spustit jiný skript pod jiným uživatelem. Proto tyto akce nelze kombinovat do jednoho úkolu.

Předpokládejme, že musíme spustit plánovač Pong po dokončení zadání Ping. Při spuštění a ukončení jakékoli úlohy se informace o této události zaznamenají do systémového protokolu. Zaměříme se na vzhled události dokončení úlohy Ping.

Pojďme otevřít konzoli Úkol Plánovač (Taskschd.msc), vyhledejte a vyberte událost Ping a přejděte na kartu ve spodním panelu Historie, obsahující informace o všech událostech spojených s touto úlohou. Máme zájem o akci s kódem 102 (Úloha dokončena) - vygeneruje se po dokončení úlohy.

Podívejme se na podrobný popis události Detail a přepnout do režimu zobrazení událostí XML (Zobrazení XML) Pomocí dat XML můžete získat všechny podrobnosti o události, kterou potřebujeme k vytvoření filtru. Zajímá nás zejména:

EventID: 102

Název poskytovatele: Microsoft-Windows-TaskScheduler

Kanál: Microsoft-Windows-TaskScheduler / Operational

Název úlohy: \ ping

Když vytváříme spouštěč pro úlohu Pong, musíme vytvořit spouštěcí podmínku pro úlohu, když se v protokolu objeví událost 102 (Spouštěč úlohy) Na akci) Problém je však v tom, že EventID 102 se objeví, když je dokončen jakýkoli úkol, nejen úkol Ping.

Je však možné vytvořit flexibilnější podmínky pro výběr událostí (Vlastní), pokud standardní filtr nepomůže dostatečně jasně vybrat událost. Klikněte na tlačítko Nový filtr událostí:

Vytvořme nový filtr událostí, který specifikuje dříve přijatá data z XML reprezentace události.

Protokoly událostí: Microsoft-Windows-TaskScheduler / Operational

Zdroj události: TaskScheduler

Kategorie úkolu: Úloha dokončena

Poté přejděte na kartu XML a vidíme následující reprezentaci XML filtru (XPath):

  * [Systém [Poskytovatel [@ Název = 'Microsoft-Windows-TaskScheduler'] a Úkol = 102]]   

Nahrazujeme kód Xpath následujícím protokolem filtrování pro přítomnost události TaskCompleted z úlohy \ ping:

  * [Systém [Poskytovatel [@ Název = 'Microsoft-Windows-TaskScheduler'] a Úkol = 102]]   

Po přidání této události zkuste spustit úlohu ping. Po dokončení by měl být úkol pong zahájen okamžitě..

Dekódování XPath je uvedeno níže.

Článek je psán na základě publikačních materiálů Spuštění naplánované úlohy za druhou (http://blogs.msdn.com/b/davethompson/archive/2011/10/25/running-a-scheduled-task-after-another.aspx)