W Harmonogramie zadań systemu Windows (Harmonogram zadań) można uruchamiać zadania zarówno zgodnie z harmonogramem, jak i gdy w dzienniku pojawi się określone zdarzenie (opisane w artykule „Wyzwalacze zdarzeń w systemie Windows”). W tym artykule dowiemy się, jak wdrożyć mechanizm, który implementuje automatyczne uruchomienie zadania harmonogramu po zakończeniu innego zadania. Rozważmy uproszczony algorytm do konfigurowania zależności do uruchamiania zadań harmonogramu, który możesz dostosować do swojego zadania.
W moim przypadku po ukończeniu jednego skryptu konieczne było uruchomienie innego skryptu z poziomu innego użytkownika. Dlatego te działania nie mogły zostać połączone w jednym zadaniu.
Załóżmy, że musimy uruchomić zadanie harmonogramu Pong po zakończeniu zadania Ping. Podczas uruchamiania i kończenia dowolnego zadania informacje o tym zdarzeniu są zapisywane w dzienniku systemowym. Skoncentrujemy się na wyglądzie zdarzenia zakończenia zadania Ping.
Otwórzmy konsolę Zadanie Harmonogram (Taskschd.msc), znajdź i wybierz zdarzenie Ping i przejdź do karty w dolnym panelu Historia, zawierający informacje o wszystkich zdarzeniach związanych z tym zadaniem. Jesteśmy zainteresowani wydarzeniem z kodem 102 (Zadanie zakończone) - generowane po zakończeniu zadania.
Otwórzmy szczegółowy opis wydarzenia, przechodząc do zakładki Szczegóły i przejdź do trybu widoku zdarzeń XML (Widok XML) Korzystając z danych XML, możesz uzyskać wszystkie szczegóły zdarzenia, które potrzebujemy do zbudowania filtra. W szczególności jesteśmy zainteresowani:
EventID: 102
Nazwa dostawcy: Microsoft-Windows-TaskScheduler
Kanał: Microsoft-Windows-TaskScheduler / Operational
Nazwa zadania: \ ping
Podczas tworzenia wyzwalacza dla zadania Pong musimy utworzyć warunek wyzwalacza dla zadania, gdy w dzienniku pojawi się zdarzenie 102 (wyzwalacz zadania Na imprezie) Problem polega jednak na tym, że EventID 102 pojawia się po zakończeniu dowolnego zadania, a nie tylko pingowaniu.
Możliwe jest jednak stworzenie bardziej elastycznych warunków wyboru zdarzeń (Niestandardowe), gdy standardowy filtr nie pomaga wystarczająco wyraźnie wybrać zdarzenia. Kliknij przycisk Nowy filtr zdarzeń:
Utwórzmy nowy filtr zdarzeń, określając wcześniej odebrane dane z reprezentacji XML zdarzenia.
Dzienniki zdarzeń: Microsoft-Windows-TaskScheduler / Operational
Źródło zdarzenia: TaskScheduler
Kategoria zadania: Zadanie zakończone
Następnie przejdź do zakładki XML i widzimy następującą reprezentację XML filtra (XPath):
* [System [Provider [@ Name = 'Microsoft-Windows-TaskScheduler'] i Task = 102]]
Zamieniamy kod Xpath na następujący dziennik filtrowania pod kątem obecności zdarzenia TaskCompleted z zadania \ ping:
* [System [Provider [@ Name = 'Microsoft-Windows-TaskScheduler'] i Task = 102]]
Po dodaniu tego zdarzenia spróbuj uruchomić zadanie ping. Po zakończeniu zadanie ponga powinno rozpocząć się natychmiast..
Dekodowanie XPath przedstawiono poniżej.
Artykuł powstał na podstawie materiałów publikacyjnych Uruchamianie zaplanowanego zadania po drugim (http://blogs.msdn.com/b/davethompson/archive/2011/10/25/running-a-scheduled-task-after-another.aspx)