Wybudzanie komputera i harmonogram zadań w Windows 7
Ciekawi mnie, ile osób nie-technicznych wie o tym, czy istnieje i do czego służy twór zwany Task Schedulerem, czy po polsku Harmonogramem Zadań. Techniczni na pewno wiedzą o tym, że istnieje możliwość automatyzacji pewnych zadań w systemie, nie tylko w Windows.
Ale zdziwiony byłem, jak potężne się stało to narzędzie na przestrzeni różnych wersji Windows. Odkryłem to przypadkowo – chciałem odpalać aplikację zaraz po wybudzeniu komputera ze stanu uśpienia. Nie da się? Błąd: da się!
W innych systemach jest od dawna coś takiego – ktoś z użytkowników systemów POSIX-owych nie słyszał o Cronie? No właśnie. Sęk w tym, że windowsowa edycja tego potworka ostatnio służy do czegoś więcej niż tylko do uruchamiania zadań o podanej godzinie.
Od ostatnich wersji Windows, Harmonogram potrafi reagować na zdarzenia dopisywane do systemowego Dziennika Zdarzeń. Zupełnie jak skrypty monitorujące dzienniki w POSIX-ach. Przyznam, że do Windows XP DZ był traktowany przez niektóre aplikacje po macoszemu i nie było czegoś ujednoliconego jak to jest w przypadku np. Linuksa. Jednak obecnie wreszcie udaje się ogarnąć cały ten chaos.
Harmonogram zadań jest dostępny w Zarządzaniu Komputerem (compmgmt.msc).
Dodawanie nowego zadania nie jest specjalnie trudne – pod warunkiem, że wiemy, czego chcemy. Wszystko jest dość intuicyjnie zaprojektowane, co mnie początkowo trochę zdziwiło, ponieważ tego typu narzędzia zwykle były nieprzyjemne w użytkowaniu…
uruchamianie po wybudzeniu
Ktoś powie, po co?
. Może być multum różnych sytuacji – czy zrestartowanie programu, zapisanie nowego IP, wiele innych. Najbardziej mnie przerażała kwestia wykorzystania osobnej aplikacji do sprawdzania, czy komputer został wybudzony, bądź nie.
Aż w pewnym momencie doznałem oświecenia – przecież Harmonogram był ostatnio odpicowany. Pogrzebałem co nieco, czy nie było zdarzenia pozwalającego na wykonanie akcji przy wybudzeniu. Niestety, nie było. Znalazłem za to innego potwora:
Co oznacza ten zrzut? Ano to, że możemy monitorować systemowe Dzienniki Zdarzeń na podstawie konkretnego wystąpienia, źródła oraz rodzaju. Również po XML (dla mnie trochę przerost formy nad treścią, ale…). I w tym momencie pozbierałem żuchwę z podłogi, ale zaraz – mam już czym sprawdzać, czy wybrane zdarzenie wystąpiło, czy nie, ale czy system dopisuje coś nam odpowiadającego. No to zajrzyjmy do dzienników (eventvwr.msc):
Okazuje się, że system jednak tworzy zdarzenie przyporządkowane wybudzeniu komptera. To teraz wykorzystajmy je do własnego celu. Tworzymy nowe zadanie, ale jako wyzwalacz wybieramy zdarzenie. Teraz pozostaje podać jego parametry.
I tu nie kumam jednego – w Dzienniku Zdarzeń nazwy są nieco inne od tych, które mamy dostępne na liście wyzwalacza. Aby uruchomić zadanie po wybudzeniu komputera ze stanu uśpienia/hibernacji, podajem parametry:
- Dziennik: Microsoft-Windows-Kernel-Power/Thermal-Operational
- Źródło: Kernel-Power
- ID zdarzenia: 1
Zatwierdzamy metodą cegły-na-enterze nasze zadanie i dokonujemy jazdy próbnej. Działa?
niedoróbki
Sam sposób sprawdza się wyśmienicie, jednak interfejs jest, momentami, trochę niedorobiony – np. przy zaawansowanym filtrowaniu zdarzeń, po zapisaniu, mamy możliwość wyłącznie edycji zapytań XPath, już nie wyklikamy ustawień. Warto o tym pamiętać.