Task Scheduler w Windows Vista

Task Scheduler w Windows Vista

Autor: Dariusz Michalski

Opublikowano: 10/1/2008, 12:00 AM

Liczba odsłon: 32045

Harmonogram - ogólne spojrzenie

Harmonogram Zadań (Task Scheduler) jest jedną z usług systemu Windows, którą można zarządzać z poziomu konsoli MMC (Microsoft Management Console), lub też otworzyć odpowiedni program z narzędzi administracyjnych panelu sterowania. Istnieje również możliwość zarządzania zadaniami z linii poleceń (cmd). Harmonogram wydaje się być bardzo popularny jednak większość osób z niego nie korzysta i nie zna jego możliwości. Posiada on jednak wiele opcji dotyczących planowania działań uruchamianych o określonej dacie i godzinie. Dzięki niemu możemy otwierać programy, wysyłać wiadomości e-mail lub też wyświetlać komunikaty. Dowiemy się jak dobrze wykorzystać Harmonogram Zadań i poznamy jego atuty.

Interfejs użytkownika

Aplikacja Panelu Sterowania

Po uruchomieniu programu ujrzymy poniższy moduł. Po lewej stronie znajduje się tematyczne drzewo katalogów, w których umieszczone są zadania. Po prawej widzimy pasek zawierający podstawowe opcje edytowania zadań. Można je również wybrać z menu programu. Klikając View, a następnie Customize możemy dostosować interfejs według własnych potrzeb. W środkowej części ekranu, u góry, widzimy listę zadań, oraz ustawienia każdego z nich poniżej.

Linia poleceń

Jak to w przypadku aplikacji sterowanych z wiersza poleceń, interfejs jest dużo mniej skomplikowany. Poleceniem schtasks /? możemy wyświetlić dostępną pomoc. Komendy obsługujące harmonogram składają się z parametru oraz argumentów dla niego: schtasks /parameter [arguments]. Wyróżniamy następujące parametry:

  • /Create - Tworzy zadanie.
  • /Delete - Usuwa zaplanowane działanie.
  • /Query - Wyświetla wszystkie działające zadania.
  • /Change - Zmienia ustawienia konkretnego zadania.
  • /Run - Uruchamia zadanie.
  • /End - Zatrzymuje aktualnie działające zadanie.
  • /? - Wyświetla pomoc (dodajemy go zawsze na końcu, np.: SCHTASKS /Run /?- wyświetli pomoc dla parametru Run.)

Tworzenie zadań za pomocą aplikacji Panelu Sterowania

Możemy to zrobić na dwa sposoby. Korzystając z kreatora, lub też ręcznie ustawiając wszystkie opcje. Wybierając pierwszy sposób, bardzo łatwo i szybko możemy zaplanować działania. Aby to zrobić, klikamy Actions, a następnie Create Basic Task, po czym ukaże się przewodnik, który w kilku krokach pozwala na utworzenie zadania.

Nie dysponuje on jednak dużą ilością ustawień. Dlatego jeżeli chcemy zaplanować zadanie bardziej skomplikowane, warto w tym celu użyć drugiego sposobu. Mianowicie aby utworzyć zadanie wybieramy z menu Actions pozycję Create Task. Ujrzymy takie oto okno:

Oprócz pola nazwy i opisu dla zadania istnieje możliwość zdefiniowania, dla jakiego użytkownika (lub grupy użytkowników) ma się ono uruchomić (przycisk Change User or Group). Możemy użyć tej opcji aby stworzyć działanie, które będzie wyświetlało powitalny komunikat podczas logowania się na konto gościa. Niżej widzimy dwa pola. Jeśli pierwsze jest zaznaczone (jak na rysunku), zadanie uruchomi się tylko wtedy, gdy użytkownik jest zalogowany. Jeżeli zaznaczymy drugą możliwość, uruchomi się nawet wtedy, gdy nie jest on zalogowany. Działanie może być skonfigurowane zgodnie ze starszymi systemami (WinXP/2000). Musimy jednak pamiętać, że zadanie zaplanowane dla Visty, nie będzie działało na poprzednich wersjach systemu.

W następnej zakładce, ustawiamy Triggery, określające sposób w jaki zadanie ma się uruchomić. Możemy ustawić więcej niż jeden Trigger. Istnieją następujące opcje dotyczące uruchamiania działań (wybieramy je z listy Begin the task):

  • On schedule - zgodnie z planem (o ustalonej dacie i godzinie):
    • One time - jednorazowo
    • Daily - codziennie
    • Weekly - raz w tygodniu (wybieramy dzień tygodnia)
    • Monthly - raz w miesiącu (wybieramy miesiąc i dzień)
  • At log on - podczas logowania użytkownika
  • At startup - podczas startu system
  • On idle - gdy komputer jest w stanie bezczynności przez pewien, określony czas
  • On an event - gdy zajdą określone czynniki
  • On task creation/modification - podczas tworzenia, modyfikowania zadania
  • On connection/disconection from user session - gdy użytkownik uzyskuje lub traci połączenie
  • On workstation lock/unlock - jak również podczas blokowania lub odblokowywania komputera

W tabeli przedstawiliśmy opis zaawansowanych opcji (Advanced Settings) sekcji Triggers:

Opcja Do czego służy
Delay task for Po zaznaczeniu tej opcji, zadanie uruchomi się ze zdefiniowanym opóźnieniem liczonym od uruchomienia triggera.
Repeat task Użycie tej opcji spowoduje kilkukrotne uruchomienie tego samego zadania
Stop task that runs longer than Opcja ta umożliwia zatrzymanie zadania, które jest już uruchomione pewien ustalony czas.
Expire Tutaj ustalamy datę i czas, po którym zadanie już się nie uruchomi ani razu.
Enabled Jeżeli pole jest odznaczone, zadanie nie uruchomi się.

W następnej zakładce definiujemy Akcje. Opisują one, co ma się stać po uruchomieniu zadania. Pierwszą możliwością na liście jest uruchomienie programu. W polu Program/Script musimy podać ścieżkę dostępu do aplikacji lub skryptu, który ma się otwierać. Opcjonalne pole Arguments określa argumenty dla programu. Istnieje jednak o wiele więcej opcji pomagających w uruchamianiu programów. Opisane są one poniżej:

Opis Wpis w polu "Program/script" Argumenty
Uruchomienie skryptu cscript.exe <ścieżka dostępu do pliku>
Skopiowanie pliku robocopy <ścieżka do pliku źródłowego>
Uruchomienie usługi net start
Zatrzymanie usługi net stop
Zamknięcie systemu shutdown -s
Restart systemu shutdown -r
Wylogowanie użytkownika shutdown -l
Oczyszczanie dysku (Disk CleanUp) cleanmgr /sagerun
Defragmentacja dysku defrag
Wyświetlenie informacji o stanie dysku chkdsk
Mapowanie dysku net use <ścieżka sieciowa>
Połączenie dial-up rasdial
Rozłączenie połączenia dial-up rasdial /disconnect
Zapisanie zdarzeń do pliku (opcja dziennika zdarzeń) wevtutil al <ścieżka do pliku>
Wyświetlenie strony sieci web iexplore
Odtworzenie piosenki wmplayer <ścieżka do pliku>

Oprócz uruchomienia programu możemy również wysłać wiadomość e-mail. Musimy odpowiednio wypełnić poszczególne pola, podając adres e-mail nadawcy, temat i treść wiadomości, a także wpisać nazwę serwera SMTP, przez który wiadomość będzie wysłana. Ostatnią z akcji, jaką możemy zdefiniować, jest wyświetlenie komunikatu w postaci okienka z przyciskiem OK.

Przejdźmy teraz do zakładki Conditions. Znajdują się w niej pewne warunki, i jeżeli którykolwiek z wybranych spośród nich nie zostanie spełniony, zadanie nie uruchomi się.

Pierwsza opcja od góry (Start the task only if the computer is idle) pozwala na uruchomienie zadania tylko wtedy gdy komputer jest w stanie bezczynności przez pewien czas. Gdy zaznaczymy to pole, powinniśmy również utworzyć odpowiedni trigger, który dotyczy stanu wstrzymania. Warunki tu wypisane są ściśle związane z triggerami. Jeżeli zostaną zdefiniowane ustawienia nie mające swoich odpowiedników w sekcji Triggers, może wystąpić błąd. Powinniśmy zostać o nim powiadomieni podczas akceptacji wszystkich ustawień. Opcja Wake the computer to run this task wybudzi komputer ze stanu wstrzymania aby uruchomić zadanie. Zaznaczając pole poniżej (w sekcji Network) możemy wybrać z listy typ połączenia, które jest niezbędne dla poprawnej pracy działania. Jeżeli planujemy wysyłanie wiadomości e-mail, opcja ta będzie bardzo przydatna.

W zakładce Settings mamy do wyboru kilka możliwości, które są bardzo użyteczne:

  • Allow task to be run on demand - umożliwia wymuszenie uruchomienia zadania. Kiedy zastosujemy tę opcję, możemy rozpocząć zadanie, klikając na nie prawym przyciskiem myszy i z menu kontekstowego wybierając Uruchom (Run). Aby zakończyć działanie, wybieramy End.
  • Run task as soon as possible after a scheduled start is missed - jeżeli planowe uruchomienie zadania nie powiodło się z jakiś przyczyn, rozpocznie się ono jak tylko to będzie możliwe.
  • If the task fails, restart every - definiuje czas ponownego uruchomienia zadania, jeżeli start nie powiódł się. Pole Attempt to restart up to określa ilość możliwych prób restartowania.
  • Stop the task if it runs longer than - opcja ta została opisana wcześniej, przy zakładce Triggers.
  • If the running task does not end when requested, force it to stop - wymusza zakończenie zadania, jeżeli nie stało się to planowo.
  • If the task is not scheduled to run again, delete it after - jeżeli zadanie nie uruchomi się już ponownie, ustala czas po jakim zostanie ono skasowane.

Może się zdarzyć, że modyfikujemy zadanie, które aktualnie jest uruchomione. Wtedy z listy na dole okna możemy wybrać następujące możliwości:

  • Nie uruchamiaj nowo zmienionego zadania
  • Uruchom nowe zadanie (nie kończąc aktualnie działającego)
  • Ustaw zadanie w kolejce (gdy zakończy się aktualne działanie, nowe uruchomi się)
  • Zakończ aktualne zadanie i uruchom nowo zmodyfikowane.

Modyfikowanie zadań, Historia

Aby zmienić utworzone już zadanie wystarczy, że z menu (po kliknięciu prawym przyciskiem myszy na wybrany element) wybierzemy opcję Properties (Właściwości). Ukaże się wtedy moduł z ustawieniami opisywanymi wcześniej. Pojawi się również całkiem nowa zakładka - History. Zawarte są w niej wszystkie informacje dotyczące uruchamiania i zatrzymywania zadań. Jeśli wystąpił podczas tych czynności jakiś błąd, będzie on tam zapisany. W historii widnieją także wszystkie zmiany i modyfikacje, jakie zostały wprowadzone do zadania.

Aby wyświetlić historię korzystając z wiersza poleceń, wpiszmy komendę schtasks /Query /FO LIST /V. Pokażą się wszystkie utworzone zadania wraz ze swoją historią. Możemy również podglądać pojedyncze elementy wpisując schtasks /TN <taskname> /Query /FO LIST /V. Dokładny opis poleceń znajdziemy w dalszej części artykułu.

Edytowanie zadań za pomocą wiersza poleceń

Pełna komenda potrzebna do utworzenia zadania ma postać:

schtasks /Create [/S <system> [/U <username> [/P [<password>]]]]
[/RU <username> [/RP <password>]] /SC <schedule> [/MO <modifier>] [/D <day>]
[/M <months>] [/I <idletime>] /TN <taskname> /TR <taskrun> [/ST <starttime>]
[/RI <interval>] [ {/ET <endtime> | /DU <duration>} [/K] [/XML <xmlfile>] [/V1]]
[/SD <startdate>] [/ED <enddate>] [/IT] [/Z] [/F]

Parametry w nawiasach kwadratowych nie są konieczne. Poniżej wytłumaczone są wszystkie użyte oznaczenia:

Parametr Opis
[/S < system >
[/U < username >
[/P [< password >]]]]
Określa nazwę komputera w sieci, na który chcemy się połączyć, jak również użytkownika i hasło, dla którego harmonogram ma być uruchomiony. Gdy pominiemy te pola, zmiany będą dotyczyły komputera lokalnego.
[/RU < username >
[/RP < password >]]
Definiuje użytkownika i hasło, dla którego zadanie ma się uruchomić. Dla konta systemowego wpisujemy SYSTEM. Hasło jest wtedy ignorowane.
/SC < schedule > Częstość uruchamiania zadania. Możliwe ustawienia to: MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.
/MO < modifier > Rozszerzenie opcji /SC. Możliwe wartości:
  • MINUTE: 1 - 1439 minut.
  • HOURLY: 1 - 23 godzin.
  • DAILY: 1 - 365 dni.
  • WEEKLY: tygodnie 1 - 52.
  • ONCE: jednorazowo.
  • ONSTART: podczas startu systemu.
  • ONLOGON: podczas logowania.
  • ONIDLE: gdy komputer jest w stanie bezczynności
  • MONTHLY: 1 - 12
  • /D < day > Wpisujemy tutaj dni tygodnia, dla których działanie ma się uruchamiać: MON, TUE, WED, THU, FRI, SAT, SUN, oraz MONTHLY 1 - 31 (dzień miesiąca), dla uruchamiania raz na miesiąc.
    /M < months > Określa miesiące w roku: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC.
    /I < idletime > Jeżeli zadanie zostało zdefiniowane z opcją ONIDLE, tutaj ustawiamy czas po jakim ma się ono uruchomić. Możliwe wartości to: 1 - 999 minut.
    /TN < taskname > Nazwa dla zadania.
    /TR < taskrun > Ścieżka do programu, który ma się uruchomić.
    /ST < starttime > Opcja wymagana, jeżeli zadanie jest tworzone z parametrem /SC ONCE. Określa czas rozpoczęcia działania. Format czasu to gg:mm (np.: 14:30). Jeżeli opcja jest pominięta, domyślnie zostaje przyjęty czas aktualny.
    /RI < interval > Definiuje odstęp czasowy (w minutach), po którym zadanie będzie uruchamiać się ponownie. Opcja ta nie działa dla zadania zaplanowanego w następujący sposób: MINUTE, HOURLY, ONSTART, ONLOGON, ONIDLE, ONEVENT. Możliwe wartości: 1 - 599940 minut. Jeżeli opcje /ET lub /DU również są użyte, /RI przyjmuje domyślną wartość 10 minut.
    {/ET < endtime > |
    /DU < duration >}
    Możemy jedynie wybrać jedną z tych dwóch opcji. /ET określa końcową godzinę na uruchomienie zadania. Format czasu gg:mm. /DU definiuje czas przewidziany na uruchomienie działania. Np.: używając opcji /ET 12:00, możemy utworzyć zadanie, które wyświetla komunikat podczas logowania, ale tylko do południa. Po 12:00 wiadomość się nie ukaże. /ET oraz /DU nie działają dla zadań skonfigurowanych następująco: ONSTART, ONLOGON, ONIDLE, ONEVENT.
    /K Kończy zadanie po upływie czasu, który został zdefiniowany w /DU, lub o godzinie określonej w /ET. Musi być użyta jedna z opcji: /ET lub /DU. /K nie działa dla zadań typu: ONSTART, ONLOGON, ONIDLE, ONEVENT.
    /XML < xmlfile > importuje zadanie z pliku XML.
    /V1 Zastosowanie tej opcji umożliwia stworzenie zadania kompatybilnego ze starszymi systemami operacyjnymi. Musimy pamiętać aby w takim działaniu nie zastosować możliwości, które działają jedynie w Viście.
    /SD < startdate > Określa datę pierwszego uruchomienia zadania (rrrr/mm/dd). Domyślna wartość jest aktualną datą. Opcja nie działa dla zadań typu: ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.
    //ED < enddate > Data wygaśnięcia zadania. Nie działa dla zadań skonfigurowanych jako: ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.
    /IT Wybranie tej opcji spowoduje, że działanie uruchomi się jedynie wtedy gdy użytkownik (/RU) jest zalogowany.
    /Z Gdy zadanie uruchomiło się ostatni raz, zostanie skasowane.
    /F Wymusza utworzenie zadania, nawet jeżeli już takie istnieje.

    Powyższe ustawienia możemy również stosować przy modyfikowaniu zadań (schtasks /Change). Postarajmy się teraz utworzyć jakieś proste działanie, np.:

    schtasks /Create /SC HOURLY /MO 1 /TN Notepad /TR c:\windows\system32\notepad.exe /ST 18:30 /RU usr /RP psw

    Zadanie Notepad zostało zdefiniowane dla użytkownika usr z hasłem psw. Uruchamia ono co godzinę notatnik rozpoczynając o 18:30. Możliwe jest utworzenie działania w konkretnym katalogu. W tym celu przed nazwą zadania dopisujemy nazwę folderu, np.: "\Microsoft\Windows\Notepad". Jeżeli chcemy uruchomić zadanie na żądanie musimy posłużyć się komendą:

    schtasks /Run /TN Notepad

    i aby je zakończyć:

    schtasks /End /TN Notepad

    Natomiast jeżeli chcemy usunąć zadanie, wpisujemy:

    schtasks /Delete /TN Notepad

    Planowanie działań na zdalnym komputerze

    Harmonogram umożliwia również zdalne łączenie się z innymi komputerami i wykonywanie tam tych samych działań. Musimy jednak pamiętać, że połączymy się jedynie z komputerem posiadającym system operacyjny Windows Vista, XP lub 2000 z uruchomioną usługą Harmonogramu Zadań. Konieczne jest również ustawienie w firewallu zezwolenia na zdalną obsługę.

    Aby połączyć się zdalnie wykorzystując aplikację graficzną, wystarczy po jej uruchomieniu z menu Actions wybrać Connect to Another Computer. W oknie, które się pojawiło wpisujemy nazwę komputera z sieci. Często niezbędne jest również podanie użytkownika i hasła. Po połączeniu możemy wykonywać te same czynności co wcześniej na komputerze lokalnym.

    W przypadku wiersza poleceń, wystarczy, że na samym początku dopiszemy: /S <system> /U <username> /P <password>, gdzie <system> to nazwa komputera w sieci. Zaplanujmy przykładowe działanie na komputerze o nazwie ABC:

    schtasks /Create /S ABC /U user /P password /SC MINUTE /MO 5 /TN Liczydlo /TR calc.exe /ST 12:00 /ET 14:00
    /SD 04/06/2007 /ED 05/06/2007 /RU usr /RP psw

    Na zdalnym systemie, zadanie co pięć minut uruchamia kalkulator, rozpoczynając o godzinie 12:00. Działanie kończy się o 14:00. Ustawiliśmy również datę rozpoczęcia i wygaśnięcia dla zadania (/SD oraz /ED).

    Jeżeli nie chcemy aby jakieś działanie uruchamiało się możemy użyć polecenia:

    schtasks /Change [/S < system > [/U < username > [/P [< password >]]]] /TN < taskname > /DISABLE

    Zostanie ono wtedy zawieszone, aż do odblokowania komendą:

    schtasks /Change [/S < system > [/U < username > [/P [< password >]]]] /TN < taskname > /ENABLE

    Importowanie i eksportowanie zadań

    Aby wyeksportować zadanie korzystając z Harmonogramu Panelu Sterowania, zaznaczamy wybrany element na liście, a następnie z menu Actions wybieramy Export. Wyeksportowane zadania są plikami z rozszerzeniem XML. Z poziomu wiersza poleceń musimy użyć polecenia schtasks /Query /XML /TN <taskname>. Dla wcześniej utworzonego zadania Notepad ujrzymy tekst jak na obrazku. Jest to skrypt języka XML. Do pliku możemy go zapisać jedynie ręcznie (kopiując tekst z konsoli).

    Importowanie jest jeszcze prostsze. W aplikacji graficznej wystarczy wybrać folder, do którego mamy zapisać zadanie, a następnie z menu Actions pozycję Import Task. Po wybraniu pliku zadanie pojawi się w folderze. W konsoli natomiast wystarczy, że wpiszemy schtasks /Create /XML <xmlfile> /TN <taskname>.

    Podgląd wszystkich uruchomionych zadań

    Po uruchomieniu Harmonogramu z Panelu Sterowania, gdy z menu Actions wybierzemy opcję Display All Running Tasks pojawi się okno z wypisanymi wszystkimi działającymi zadaniami, folderami, w których one się znajdują oraz kilka innych informacji.

    W tym samym celu wierszu poleceń wystarczy wpisać komendę schtasks /Query:

    Podsumowanie

    Nowy Harmonogram Zadań umieszczony w Windows Vista daje dużo większe możliwości niż w poprzednich wersjach systemu. Dzięki niemu możemy stworzyć kilka ciekawych rozwiązań, które urozmaicą pracę z komputerem, dlatego warto się mu przyjrzeć.

    Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
    Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

    Wydarzenia