Jak automatizovat skripty prostředí PowerShell pomocí Plánovače úloh

Plánovač úloh Microsoft Windows vám pomůže automaticky spustit program nebo skript prostředí PowerShell v určitý čas nebo při splnění určitých podmínek. Můžete také naplánovat odesílání e-mailů a dokonce i zobrazování určitých zpráv. V tomto blogu si ukážeme, jak z Plánovače úloh spustit skript prostředí PowerShell, který upozorní na jakoukoli instalaci softwaru v místním počítači.

Pomocí skriptů prostředí PowerShell budeme také vytvářet plánované úlohy. Dozvíte se, jak:

  • Vytvářet úlohy pomocí Plánovače úloh
  • Modifikovat nebo odstraňovat naplánované úlohy
  • Vytvářet naplánované úlohy pomocí skriptů prostředí PowerShell.

Vytvářet úlohy pomocí Plánovače úloh

Otevřete Plánovač úloh stisknutím kláves „Windows+R“ a v otevřeném okně zadejte „taskschd.msc“. Poté proveďte následující kroky:

1. Udělejte následující kroky. Klepněte na tlačítko „Vytvořit úlohu“ a zadejte název a popis nové úlohy. Chcete-li program spustit s právy správce, zaškrtněte políčko „Spustit s nejvyššími právy“. V našem příkladu přiřadíme ke spuštění úlohy účet služby a spustíme ji bez ohledu na to, zda je uživatel přihlášen.

2. Přepněte na kartu Spouštěče a klikněte na tlačítko „Nový…“. Zde můžete zadat podmínky, které spustí provedení úlohy. Můžete ji například nechat provést podle plánu, při přihlášení, při nečinnosti, při spuštění nebo vždy, když nastane určitá událost. Chceme, aby se naše úloha spouštěla při každé nové instalaci softwaru, proto v rozevírací nabídce zvolíme možnost „Při události“ a v nastavení protokolu vybereme možnost „Aplikace“. Parametr „Zdroj“ ponecháme prázdný a ID události nastavíme na „11707“. Změny uložíme kliknutím na tlačítko „OK“.

3. Přejděte na kartu „Akce“ a klikněte na tlačítko „Nový…“. Zde můžete zadat akce, které se provedou vždy, když jsou splněny podmínky spouštěče. Můžete například odeslat e-mail nebo zobrazit zprávu. V našem případě chceme spustit program, takže musíme vytvořit skript PowerShell, který chceme spustit, a uložit jej s příponou „ps1“. Skript najdete zde; odešle upozornění s podrobnostmi o události týkající se nainstalovaného softwaru.

Pro naplánování skriptu PowerShell zadejte následující parametry:

  • Akce: Spustit program
  • Program\skript: powershell
  • Přidejte argumenty (nepovinné): -File

Klepnutím na „OK“ uložte změny.

4. Karta „Podmínky“ umožňuje zadat podmínky, které spolu se spouštěčem určují, zda se má úloha spustit. V našem případě bychom na této kartě měli ponechat výchozí nastavení.

5. V případě, že se jedná o úlohu, která se má splnit, můžeme se rozhodnout, zda ji splnit. Na kartě „Nastavení“ můžete nastavit i další parametry naplánované úlohy. Pro náš příklad je však ponecháme beze změny.

6. Po kompletním nastavení úlohy vás systém požádá o zadání hesla k účtu služby. Upozorňujeme, že tento účet musí mít právo „Přihlásit se jako dávková úloha“. Zadejte heslo a kliknutím na tlačítko „OK“ úlohu uložte.
7. Aby plánovač úloh správně fungoval, musí být nastaveno spuštění služby Plánovač úloh Spustit „Services.msc“. V seznamu služeb vyhledejte službu Plánovač úloh a dvakrát na ni klikněte. Na kartě Obecné nastavte typ spuštění na „Automatický“ a kliknutím na tlačítko OK změnu uložte.

Při každé instalaci nového softwaru na server Microsoft Windows Server budete nyní upozorněni e-mailem, ve kterém bude uveden čas instalace, název softwaru a ID uživatele (SID) osoby, která jej instalovala.

Úprava nebo odstranění naplánovaných úloh

Chcete-li upravit existující úlohu, klikněte na ni v seznamu pravým tlačítkem myši, vyberte možnost Vlastnosti, upravte požadované nastavení a klikněte na tlačítko OK. Chcete-li naplánovanou úlohu odstranit, klikněte na ni pravým tlačítkem myši, vyberte možnost Odstranit a akci potvrďte.

Vytváření naplánovaných úloh pomocí skriptů prostředí PowerShell

Teď, když víte, jak vytvořit úlohu pomocí Plánovače úloh, zjistíme, jak vytvořit naplánovanou úlohu pomocí prostředí PowerShell. Předpokládejme, že chceme, aby se naše úloha spouštěla denně v 10 hodin dopoledne a musela spustit skript prostředí PowerShell, který najdete zde a který bude sledovat změny členství ve skupinách v lokalitě služby Active Directory.

V prostředí Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2) je k vytvoření naplánované úlohy nutné použít modul TaskScheduler. Nainstalujte modul spuštěním příkazu „Import-Module TaskScheduler“ a pomocí následujícího skriptu vytvořte úlohu, která denně v 10:00 hodin provede skript prostředí PowerShell s názvem GroupMembershipChanges.ps1:

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

Prostředí Windows PowerShell 4.0 (Windows Server 2012 R2 a vyšší) neobsahuje modul Plánovač úloh, takže tento skript nebude fungovat. Místo toho prostředí PowerShell 3.0 a 4.0 zavedlo nové rutiny pro vytváření naplánovaných úloh New-ScheduledTaskTrigger a Register-ScheduledTask, díky nimž je vytvoření naplánované úlohy mnohem jednodušší a pohodlnější. Vytvořme tedy úlohu, která bude náš skript spouštět denně v 10 hodin ráno pomocí systémového účtu (SYSTEM). Tuto úlohu bude provádět účet se zvýšenými právy.

$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

Další možnosti spouštění, které by mohly být užitečné při vytváření nových úloh, zahrnují:

  • -AtStartup – Spustí vaši úlohu při spuštění systému Windows.
  • -AtLogon – Spustí vaši úlohu při přihlášení uživatele.
  • -Once – Spustí vaši úlohu jednou. Interval opakování můžete nastavit pomocí parametru -RepetitionInterval.
  • -Weekly – Spustí vaši úlohu jednou týdně.

Všimněte si, že pomocí těchto rutin není možné spouštět provádění „při události“, jako jsme to dělali s nástrojem Plánovač úloh. Skripty prostředí PowerShell se spouštěním „při události“ jsou mnohem složitější, takže to je skutečná nevýhoda použití prostředí PowerShell namísto nástroje Plánovač úloh.

Závěr

Jak vidíte, je snadné vytvářet naplánované úlohy pomocí nástroje Plánovač úloh nebo prostředí PowerShell. Nezapomeňte však, že nesprávné změny naplánovaných úloh mohou způsobit přerušení služby a snížit výkon serveru. Proto je nezbytné sledovat všechny změny naplánovaných úloh.

Jeff je ředitelem oddělení Global Solutions Engineering ve společnosti Netwrix. Je dlouholetým bloggerem, řečníkem a prezentátorem společnosti Netwrix. Na blogu Netwrix Jeff sdílí lifehacky, tipy a triky, které mohou výrazně zlepšit vaše zkušenosti se správou systému.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.