Jak zautomatyzować skrypty PowerShell za pomocą Harmonogramu zadań

Szablon zadań systemu Microsoft Windows może pomóc w automatycznym uruchomieniu programu lub skryptu PowerShell w określonym czasie lub po spełnieniu określonych warunków. Można również zaplanować wysyłanie wiadomości e-mail, a nawet wyświetlanie określonych wiadomości. W tym blogu pokażemy, jak uruchomić skrypt PowerShell z Harmonogramu zadań, który będzie ostrzegał o każdej instalacji oprogramowania na komputerze lokalnym.

Będziemy również tworzyć zaplanowane zadania przy użyciu skryptów PowerShell. Dowiesz się, jak:

  • Tworzyć zadania za pomocą Harmonogramu zadań
  • Modyfikować lub usuwać zaplanowane zadania
  • Tworzyć zaplanowane zadania za pomocą skryptów PowerShell.

Tworzyć zadania za pomocą Harmonogramu zadań

Otwórz Harmonogram zadań, naciskając klawisze „Windows+R”, a następnie wpisując „taskschd.msc” w otwartym oknie. Następnie wykonaj następujące kroki:

1. Kliknij „Utwórz zadanie” i wprowadź nazwę i opis nowego zadania. Aby uruchomić program z uprawnieniami administratora, zaznacz pole „Uruchom z najwyższymi uprawnieniami”. W naszym przykładzie do uruchamiania zadania zostanie przypisane konto usługi i będzie ono uruchamiane niezależnie od tego, czy użytkownik jest zalogowany.

2. Przejdź do zakładki Wyzwalacze i kliknij przycisk „Nowy…”. W tym miejscu możesz określić warunki, które spowodują wykonanie zadania. Na przykład, możesz zlecić wykonanie zadania zgodnie z harmonogramem, po zalogowaniu, w stanie bezczynności, podczas uruchamiania lub w momencie wystąpienia określonego zdarzenia. Chcemy, aby nasze zadanie było uruchamiane przy każdej nowej instalacji oprogramowania, więc wybieramy „On an event” z menu rozwijanego i zaznaczamy „Application” z ustawień Log. Parametr „Źródło” pozostawiamy pusty, a EventID ustawiamy na „11707”. Klikamy „OK”, aby zapisać zmiany.

3. Przechodzimy do zakładki „Akcje” i klikamy „Nowy…”. W tym miejscu możesz określić akcje, które zostaną wykonane po spełnieniu warunków trigera. Na przykład, możesz wysłać e-mail lub wyświetlić wiadomość. W naszym przypadku chcemy uruchomić program, więc musimy utworzyć skrypt PowerShell, który chcemy uruchomić i zapisać go z rozszerzeniem „ps1”. Skrypt można znaleźć tutaj; wyśle on alert ze szczegółami zdarzenia dotyczącymi zainstalowanego oprogramowania.

Aby zaplanować skrypt PowerShell, należy określić następujące parametry:

  • Akcja: Start a program
  • Skrypt programu: powershell
  • Dodaj argumenty (opcjonalnie): -File

Kliknij „OK”, aby zapisać zmiany.

4. Zakładka „Warunki” umożliwia określenie warunków, które wraz z wyzwalaczem decydują o tym, czy zadanie powinno zostać uruchomione. W naszym przypadku powinniśmy pozostawić domyślne ustawienia w tej zakładce.

5. W zakładce „Ustawienia” można również ustawić dodatkowe parametry dla zaplanowanego zadania. Dla naszego przykładu pozostawimy je jednak bez zmian.

6. Po zakończeniu konfiguracji zadania system poprosi Cię o podanie hasła do konta serwisowego. Należy pamiętać, że konto to musi posiadać uprawnienie „Log on as Batch Job”. Wprowadź hasło i kliknij „OK”, aby zapisać zadanie.
7. Aby Task Scheduler działa poprawnie, usługa Job Scheduler musi być ustawiona na uruchamianie Uruchom „Services.msc”. Na liście usług znajdź Task Scheduler i kliknij go dwukrotnie. Na karcie Ogólne ustaw typ uruchamiania na „Automatyczny” i kliknij przycisk OK, aby zapisać zmianę.

Teraz za każdym razem, gdy nowe oprogramowanie zostanie zainstalowane na serwerze Microsoft Windows, użytkownik zostanie powiadomiony za pomocą wiadomości e-mail, która zawiera szczegóły dotyczące czasu instalacji, nazwy oprogramowania i identyfikatora użytkownika (SID) osoby, która je zainstalowała.

Modyfikowanie lub usuwanie zaplanowanych zadań

Aby zmodyfikować istniejące zadanie, kliknij je prawym przyciskiem myszy na liście, wybierz opcję Właściwości, edytuj wymagane ustawienia i kliknij przycisk OK. Aby usunąć zaplanowane zadanie, kliknij je prawym przyciskiem myszy, wybierz polecenie Usuń i potwierdź czynność.

Tworzenie zaplanowanych zadań za pomocą skryptów PowerShell

Teraz, gdy już wiesz, jak utworzyć zadanie za pomocą narzędzia Task Scheduler, dowiedzmy się, jak utworzyć zaplanowane zadanie za pomocą PowerShell. Załóżmy, że chcemy, aby nasze zadanie było uruchamiane codziennie o 10 rano i musi wykonać skrypt PowerShell, który można znaleźć tutaj, który będzie monitorował zmiany członkostwa w grupach w witrynie Active Directory.

W Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2), aby utworzyć zaplanowane zadanie, musisz użyć modułu TaskScheduler. Zainstaluj ten moduł, uruchamiając polecenie „Import-Module TaskScheduler”, i użyj następującego skryptu do utworzenia zadania, które będzie wykonywać skrypt PowerShell o nazwie GroupMembershipChanges.ps1 codziennie o godzinie 10 rano:

Import-Module TaskScheduler $task = New-Task$task.Settings.Hidden = $trueAdd-TaskAction -Task $task -Path C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe –Arguments "-File C:\Scripts\GroupMembershipChanges.ps1"Add-TaskTrigger -Task $task -Daily -At "10:00"Register-ScheduledJob –Name "Monitor Group Management" -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 i nowsze) nie zawiera modułu Task Scheduler, więc ten skrypt nie będzie działać. Zamiast tego, PowerShell 3.0 i 4.0 wprowadził nowe cmdlety do tworzenia zaplanowanych zadań, New-ScheduledTaskTrigger i Register-ScheduledTask, które sprawiają, że tworzenie zaplanowanych zadań jest znacznie łatwiejsze i wygodniejsze. Utwórzmy więc zadanie, które będzie wykonywało nasz skrypt codziennie o 10 rano na koncie systemowym (SYSTEM). Zadanie to będzie wykonywane przez konto z podwyższonymi uprawnieniami.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings$User= "NT AUTHORITY\SYSTEM" # Specify the account to run the script$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.ps1" # Specify what program to run and with its parametersRegister-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Inne opcje wyzwalacza, które mogą być przydatne przy tworzeniu nowych zadań, obejmują:

  • -AtStartup – wyzwala zadanie przy starcie systemu Windows.
  • -AtLogon – wyzwala zadanie, gdy użytkownik się zaloguje.
  • -Once – wyzwala zadanie raz. Możesz ustawić interwał powtórzeń używając parametru -RepetitionInterval.
  • -Weekly – Wyzwala zadanie raz w tygodniu.

Zauważ, że używając tych cmdletów nie jest możliwe wyzwalanie wykonania „na zdarzenie”, tak jak to robiliśmy z narzędziem Task Scheduler. Skrypty PowerShell z wyzwalaczami „na zdarzenie” są znacznie bardziej skomplikowane, więc jest to prawdziwa wada używania PowerShell zamiast Task Scheduler.

Podsumowanie

Jak widać, łatwo jest tworzyć zaplanowane zadania przy użyciu Task Scheduler lub PowerShell. Pamiętaj jednak, że niewłaściwe zmiany w zaplanowanych zadaniach mogą spowodować przerwy w świadczeniu usług i pogorszyć wydajność serwera. Dlatego istotne jest, aby śledzić wszystkie zmiany w zaplanowanych zadaniach.

Jeff jest dyrektorem ds. inżynierii rozwiązań globalnych w firmie Netwrix. Jest długoletnim blogerem, mówcą i prezenterem firmy Netwrix. Na blogu Netwrix, Jeff dzieli się lifehackami, wskazówkami i sztuczkami, które mogą radykalnie poprawić Twoje doświadczenie w administrowaniu systemem.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.