PowerShell-skriptek automatizálása a Feladatütemezővel

A Microsoft Windows Feladatütemező segítségével automatikusan elindíthat egy programot vagy PowerShell-skriptet egy adott időpontban vagy bizonyos feltételek teljesülése esetén. Az e-mailek küldését vagy akár bizonyos üzenetek megjelenítését is ütemezheti. Ebben a blogban megmutatjuk, hogyan futtathatunk a Feladatütemezőből egy PowerShell szkriptet, amely riasztást ad bármely szoftver telepítéséről a helyi számítógépen.

A PowerShell szkriptek segítségével ütemezett feladatokat is létrehozunk. Megtanulja, hogyan:

  • Feladatok létrehozása a Feladatütemezővel
  • Elrendelt feladatok módosítása vagy törlése
  • Elrendelt feladatok létrehozása PowerShell szkriptekkel.

Feladatok létrehozása a Feladatütemezővel

A Feladatütemező megnyitása a “Windows+R” billentyűkombinációval, majd a megnyíló ablakban a “taskschd.msc” beírásával. Ezután tegye meg a következő lépéseket:

1. Kattintson a “Feladat létrehozása” gombra, és adja meg az új feladat nevét és leírását. A program rendszergazdai jogosultságokkal történő futtatásához jelölje be a “Futtatás a legmagasabb jogosultságokkal” négyzetet. Példánkban a feladat futtatásához egy szolgálati fiókot rendelünk, és a feladatot attól függetlenül futtatjuk, hogy a felhasználó be van-e jelentkezve.

2. Váltson az Indítók lapra, és kattintson az “Új…” gombra. Itt adhatja meg azokat a feltételeket, amelyek kiváltják a feladat végrehajtását. Például ütemezés szerint, bejelentkezéskor, üresjáratkor, indításkor vagy egy adott esemény bekövetkezésekor is végrehajtható. Azt szeretnénk, hogy a feladatunkat minden új szoftver telepítése indítsa el, ezért a legördülő menüből az “Eseménykor” opciót választjuk, a Naplóbeállítások közül pedig az “Alkalmazás” opciót. A “Source” paramétert hagyjuk üresen, az EventID-t pedig állítsuk “11707”-re. Kattintson az “OK” gombra a módosítások mentéséhez.

3. Navigáljon a “Műveletek” fülre, és kattintson az “Új…” gombra. Itt adhatja meg azokat a műveleteket, amelyek a kiváltási feltételek teljesülése esetén végrehajtásra kerülnek. Például küldhet egy e-mailt vagy megjeleníthet egy üzenetet. Esetünkben egy programot szeretnénk elindítani, ezért létre kell hoznunk a futtatni kívánt PowerShell szkriptet, és “ps1” kiterjesztéssel kell elmentenünk. A szkriptet itt találja; ez egy figyelmeztetést fog küldeni a telepített szoftverről szóló esemény részleteivel.

A PowerShell szkript ütemezéséhez adja meg a következő paramétereket:

  • Művelet: Program indítása
  • Program\script: powershell
  • Érvek hozzáadása (opcionális): -File

A módosítások mentéséhez kattintson az “OK” gombra.

4. A “Feltételek” lapon megadhatja azokat a feltételeket, amelyek a kiváltóval együtt meghatározzák, hogy a feladatot el kell-e indítani. Esetünkben hagyjuk meg az alapértelmezett beállításokat ezen a lapon.

5. A “Beállítások” lapon további paramétereket is beállíthatunk az ütemezett feladathoz. Példánkban azonban ezeket változatlanul hagyjuk.

6. Amikor a feladat teljes beállítása megtörtént, a rendszer megkérdezi a szolgáltatási fiók jelszavát. Vegye figyelembe, hogy ennek a fióknak rendelkeznie kell a “Bejelentkezés kötegelt feladatként” joggal. Adja meg a jelszót, és kattintson az “OK” gombra a feladat mentéséhez.
7. A Feladatütemező megfelelő működéséhez a Feladatütemező szolgáltatást úgy kell beállítani, hogy elinduljon A “Services.msc” futtatása. A szolgáltatások listájában keresse meg a Feladatütemezőt, és kattintson rá duplán. Az Általános lapon állítsa az indítás típusát “Automatikus” értékre, majd kattintson az OK gombra a módosítás mentéséhez.

Mostantól minden új szoftver telepítésekor a Microsoft Windows szerverre e-mailben kap értesítést, amely tartalmazza a telepítés időpontját, a szoftver nevét és a telepítő személy felhasználói azonosítóját (SID).

Az ütemezett feladatok módosítása vagy törlése

A meglévő feladat módosításához kattintson rá a jobb gombbal a listában, válassza a Tulajdonságok lehetőséget, szerkessze a szükséges beállításokat, majd kattintson az OK gombra. Ha törölni szeretne egy ütemezett feladatot, kattintson rá a jobb gombbal, válassza a Törlés lehetőséget, majd erősítse meg a műveletet.

Ütemezett feladatok létrehozása PowerShell szkriptekkel

Most, hogy már tudja, hogyan hozhat létre feladatot a Feladatütemező segítségével, nézzük meg, hogyan hozhat létre ütemezett feladatot a PowerShell segítségével. Tegyük fel, hogy a feladatunkat naponta 10 órakor szeretnénk elindítani, és az itt található PowerShell szkriptet kell végrehajtania, amely figyeli a csoporttagság változását az Active Directory webhelyen.

A Windows Powershell 2.0-ban (Windows 7, Windows Server 2008 R2) az ütemezett feladat létrehozásához a TaskScheduler modult kell használnunk. Telepítse a modult az “Import-Module TaskScheduler” parancs futtatásával, és a következő szkript segítségével hozzon létre egy feladatot, amely a GroupMembershipChanges.ps1 nevű PowerShell-szkriptet naponta 10 órakor hajtja végre:

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

A Windows PowerShell 4.0 (Windows Server 2012 R2 és újabb) nem tartalmazza a Task Scheduler modult, így ez a szkript nem fog működni. Ehelyett a PowerShell 3.0 és 4.0 új cmdleteket vezetett be az ütemezett feladatok létrehozására: New-ScheduledTaskTrigger és Register-ScheduledTask, amelyek sokkal egyszerűbbé és kényelmesebbé teszik az ütemezett feladatok létrehozását. Hozzunk létre tehát egy olyan feladatot, amely a rendszerfiók (SYSTEM) használatával naponta 10 órakor végrehajtja a szkriptünket. Ezt a feladatot egy megnövelt jogosultságokkal rendelkező fiók fogja végrehajtani.

$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

Az új feladatok létrehozásánál hasznos lehet még a következő kiváltási lehetőségek:

  • -AtStartup – A Windows indításakor indítja a feladatot.
  • -AtLogon – A felhasználó bejelentkezésekor indítja a feladatot.
  • -Once – Egyszer indítja a feladatot. A -RepetitionInterval paraméterrel beállíthat egy ismétlési intervallumot.
  • -Weekly – Hetente egyszer indítja el a feladatot.

Megjegyezzük, hogy ezekkel a cmdletekkel nem lehet “eseményre” indítani a végrehajtást, mint ahogyan azt a Feladatütemező eszközzel tettük. A PowerShell szkriptek “on an event” triggerekkel sokkal bonyolultabbak, így ez egy igazi hátránya a PowerShell használatának a Task Scheduler helyett.

Következtetés

Mint láthatjuk, a Task Scheduler vagy a PowerShell segítségével könnyen létrehozhatunk ütemezett feladatokat. Ne feledje azonban, hogy az ütemezett feladatok nem megfelelő módosítása szolgáltatásmegszakításokat okozhat, és ronthatja a kiszolgáló teljesítményét. Ezért fontos, hogy nyomon kövesse az ütemezett feladatok minden módosítását.

Jeff a Netwrix globális megoldásfejlesztési igazgatója. Régóta a Netwrix bloggere, előadója és előadója. A Netwrix blogjában Jeff olyan életre szóló trükköket, tippeket és trükköket oszt meg, amelyekkel drámaian javíthatja a rendszergazdai tapasztalatokat.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.