Centrum skryptów - Systemy operacyjne

Jak wykonać zaplanowane zadanie w systemie Windows Vista?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak wykonać zaplanowane zadanie w systemie Windows Vista?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Rozumiem, że w systemie Windows Vista możliwe jest napisanie skryptu, który spowoduje natychmiastowe wykonanie zaplanowanego zadania. Jak to zrobić?

-- KW

Cześć Skrypciarze! Odpowiedź

Cześć, KW. Zanim zabierzemy się za dzisiejsze pytanie, chciałbym wykorzystać tę chwilę i uczcić pamięć naszego kolegi Deana Tsaltasa. Nie, żeby mu się coś stało, fizycznie jest on w świetnej kondycji i tak też wygląda. (No dobra: fizycznie wygląda równie imponująco, co zazwyczaj.) Jak się okazuje, Deana dopadło coś gorszego niż śmierć: razem z rodziną przeprowadza się do Halifax w Nowej Szkocji.

Informacja dla tych osób, które się takimi rzeczami przejmują: Dean był, jest i zawsze będzie Skrypciarzem. Ponadto, Dean w dalszym ciągu pracuje dla firmy Microsoft nad pakietem WMI SDK (j.ang.); jedyną różnicą jest to, że swoją pracę będzie wykonywał w Halifax.

W każdym razie my, Skrypciarze bardzo serdecznie dziękujemy Deanowi za współpracę i za te wszystkie wspaniałe rzeczy, które dla nas zrobił i w ogóle za wszystko. Niestety, pomimo szczerych chęci podania kilku przykładów tego, co zrobił dla nas i naszego Centrum Skryptów, nie przychodzi nam do głowy absolutnie nic, co mogłoby się nadać na taką okazję. Ale w końcu pracował tu tylko sześć lat.

Zaraz zaraz, przecież to on napisał Scriptomatic (j.ang.), narzędzie, dzięki któremu w największym stopniu możliwe było wprowadzenie usługi WMI do świata skryptów. A gdyby tego było mało, powiem jeszcze, że zawsze można był liczyć na towarzystwo Deana podczas lunchu; tak naprawdę Dean z chęcią jadł kilka lunchów, jeżeli była taka potrzeba.

A teraz, kiedy już go nie ma, kto nam będzie opowiadał o nowościach w świecie Ultimate Fighting?

Innymi słowy, to dla nas bardzo smutny dzień. Ale wszystko się przecież jakoś ułoży, Deana z nami tu nie ma, ale na pewno o nim nie zapomnimy. Jego osoba zostanie w naszej pamięci na długo, dokładnie tak, jak ten drugi Skrypciarz, który został premierem czy kimś takim, pozostał w naszej pamięci.

Ponadto zawsze chciałem jechać do Nowej Skocji, ale uniemożliwiały to warunki obiektywne. Teraz będę miał większą motywację.

Klimat w Nowej Szkocji. W styczniu w 1993 roku temperatura na lotnisku w Halifax sięgnęła -28,5 stopni Celsjusza. W lutym 2004 roku na lotnisko spadło 66 centymetrów śniegu.

Tymczasem chcielibyśmy podarować Deanowi mały prezent pożegnalny od kolegów Skrypciarzy; skrypt, który w systemie Windows Vista spowoduje natychmiastowe wykonanie zaplanowanego zadania.

Set objTaskService = CreateObject("Schedule.Service")

objTaskService.Connect



Set objRootFolder = objTaskService.GetFolder("\")

Set objTask = objRootFolder.GetTask("Test Task")



objTask.Run vbNull

Wygląda zupełnie, jak prosty, mały skrypt, no cóż, w końcu jest ku temu dobry powód: to jest prosty, mały skrypt. Jak widzimy, zaczynamy od utworzenia wystąpienia obiektu Schedule.Service, a następnie wywołujemy metodę Connect, która połączy nas z usługą Task Scheduler na lokalnym komputerze. Czy możemy wykonać to samo zadanie na zdalnym komputerze o nazwie atl-fs-01? Oczywiście, że tak; wystarczy przekazać metodzie Connect nazwę tego komputera w ten oto sposób:

objTaskService.Connect("atl-fs-01")

Połączywszy się z usługą Task Scheduler stosujemy metodę GetFolder w celu połączenia się z folderem głównym usługi Task Scheduler:

Set objRootFolder = objTaskService.GetFolder("\")

A cóż to? Co się stanie, jeżeli nasze zadanie będzie się znajdować w podfolderze tego folderu głównego; wiecie, folderu o nazwie typu Admin Tasks? Żaden problem; po prostu określamy kompletną ścieżkę do tego folderu, w ten oto sposób:

Set objRootFolder = objTaskService.GetFolder("\Admin Tasks")

Kiedy połączymy się z właściwym folderem, możemy wywołać metodę GetTask w celu utworzenia odniesienia obiektu do żądanego zadania; w tym celu po prostu przekazujemy metodzie GetTask nazwę zadanie, które chcemy uruchomić:

Set objTask = objRootFolder.GetTask("Test Task")

Teraz, żeby wykonać zadanie, wystarczy wywołać metodę Run, przekazując stałą vbNull skryptu VBScript jak sposób wskazania, że chcemy uruchomić to zadanie bez żadnych specjalnych parametrów.

objTask.Run vbNull

Zaplanowane zadanie Test Task zadziała tak po prostu.

Uwaga. Macie absolutną rację: usługa Task Scheduler w systemie Windows Vista jest o wiele fajniejsza i łatwiejsza do obsługi za pomocą skryptów Task Scheduler w innych wersjach systemu Windows. Krótkie wprowadzenie na temat pisania skryptów współpracujących z usługą Task Scheduler znajduje się w naszym artykule Task Scheduler: Part 1 (j.ang).

To już koniec na dzisiaj, naprawdę. Wrócimy tu jutro, chociaż z ciężkimi sercami – jutro ostatni dzień w pracy Deana.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne