A PowerShell-szkriptek automatizálása a Feladatütemezővel
A Microsoft Windows Task Scheduler segítségével automatikusan elindíthat egy programot vagy PowerShell-szkriptet egy adott időpontban vagy bizonyos feltételek teljesülése esetén. Ütemezheti az e-mailek küldését, sőt bizonyos üzenetek megjelenítését is. Ebben a blogban bemutatjuk, hogyan futtathat PowerShell-szkriptet a Task Schedulerből, amely figyelmezteti a helyi számítógépre telepített szoftvereket.
Ütemezett feladatokat is készítünk PowerShell-szkriptek segítségével. Megfogod tanulni hogyan:
- Hozzon létre feladatokat a Feladatütemezővel
- Ütemezett feladatok módosítása vagy törlése
- Ütemezett feladatok létrehozása PowerShell-szkriptekkel.
Feladatok létrehozása Feladatütemezővel
Nyissa meg a Feladatütemezőt a „Windows+R” megnyomásával, majd írja be a „taskschd.msc” parancsot a megnyíló ablakba. Ezután tegye 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 való futtatásához jelölje be a „Futtatás a legmagasabb jogosultságokkal” négyzetet. Példánkban hozzárendelünk egy szolgáltatásfiókot a feladat futtatásához, és függetlenül attól, hogy a felhasználó bejelentkezett-e.
2. Váltson a Triggerek lapra, és kattintson az „Új…” gombra. Itt adhatja meg azokat a feltételeket, amelyek kiváltják a végrehajtandó feladatot. Például végrehajthatja ütemezetten, bejelentkezéskor, üresjáratban, indításkor vagy bármikor, amikor egy adott esemény bekövetkezik. Szeretnénk, ha minden új szoftvertelepítés elindítaná a feladatunkat, ezért a legördülő menüből az „Eseményen” lehetőséget választjuk, a Naplóbeállítások közül pedig az „Alkalmazás” lehetőséget. Hagyja üresen a „Source” paramétert, és állítsa az EventID értéket „11707”-re. Kattintson az „OK” gombra a módosítások mentéséhez.
3. Lépjen a „Műveletek” fülre, és kattintson az „Új…” gombra. Itt adhatja meg azokat a műveleteket, amelyek végrehajtásra kerülnek, ha az aktiválási feltételek teljesülnek. Például küldhet e-mailt vagy megjeleníthet üzenetet. Esetünkben egy programot szeretnénk elindítani, ezért létre kell hoznunk a futtatni kívánt PowerShell szkriptet, és el kell mentenünk a „ps1” kiterjesztéssel. A forgatókönyvet itt találod; riasztást küld az esemény részleteivel a telepített szoftverről.
A PowerShell-szkript ütemezéséhez adja meg a következő paramétereket:
- Művelet: Indítson el egy programot
- Programscript: powershell
- Argumentumok hozzáadása (opcionális): - Fájl [Itt adja meg a szkript elérési útját]
Kattintson az „OK” gombra a módosítások mentéséhez.
4. A „Feltételek” lapon megadhatja azokat a feltételeket, amelyek az eseményindítóval együtt meghatározzák, hogy a feladatot le kell-e futtatni. Esetünkben ezen a lapon kell hagynunk az alapértelmezett beállításokat.
5. A „Beállítások” lapon további paramétereket is beállíthat az ütemezett feladathoz. A mi példánkban azonban változatlanul hagyjuk őket.
6. Amikor a feladat teljesen be van állítva, a rendszer kérni fogja a szervizfiók jelszavát. Vegye figyelembe, hogy ennek a fióknak rendelkeznie kell a „Bejelentkezés kötegelt munkaként” joggal. Írja be a jelszót, és kattintson az „OK” gombra a feladat mentéséhez.
7. A Feladatütemező megfelelő működéséhez a Job Scheduler szolgáltatást úgy kell beállítani, hogy elindítsa a „Services.msc” futtatását. A szolgáltatások listájában keresse meg a Feladatütemezőt, és kattintson rá duplán. Az Általános lapon állítsa be az indítási típust „Automatikus” értékre, majd kattintson az OK gombra a módosítás mentéséhez.
Mostantól minden alkalommal, amikor új szoftvert telepít a Microsoft Windows Server kiszolgálóra, e-mailben értesítést kap, amely részletezi a telepítés idejét, a szoftver nevét és a telepítő személy felhasználói azonosítóját (SID).
Ütemezett feladatok módosítása vagy törlése
Meglévő feladat módosításához kattintson rá jobb gombbal a listában, válassza a Tulajdonságok menüpontot, módosítsa a szükséges beállításokat, majd kattintson az OK gombra. Ütemezett feladat törléséhez kattintson rá jobb gombbal, válassza a Törlés lehetőséget, és erősítse meg a műveletet.
Ütemezett feladatok létrehozása PowerShell-szkriptekkel
Most, hogy tudja, hogyan hozhat létre feladatot a Feladatütemezővel, nézzük meg, hogyan hozhat létre ütemezett feladatot a PowerShell használatával. Tegyük fel, hogy azt szeretnénk, hogy a feladatunk naponta 10 órakor induljon el, és végre kell hajtania az itt található PowerShell-szkriptet, amely figyeli a csoporttagság változásait az Active Directory webhelyen.
A Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2) rendszerben ütemezett feladat létrehozásához a TaskScheduler modult kell használnia. 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 végrehajtja a GroupMembershipChanges.ps1 nevű PowerShell-szkriptet naponta 10 órakor. :
Import-Module TaskScheduler $task = New-Task
$task.Settings.Hidden = $true
Add-TaskAction -Task $task -Path C:Windowssystem32WindowsPowerShellv1.0powershell.exe –Arguments “-File C:ScriptsGroupMembershipChanges.ps1”
Add-TaskTrigger -Task $task -Daily -At “10:00”
Register-ScheduledJob –Name ”Monitor Group Management” -Task $taskA Windows PowerShell 4.0 (Windows Server 2012 R2 és újabb) nem tartalmazza a Feladatütemező modult, így ez a szkript nem fog működni. Ehelyett a PowerShell 3.0 és 4.0 új parancsmagokat vezetett be ütemezett feladatok létrehozásához, a New-ScheduledTaskTrigger és a Register-ScheduledTask, amelyek sokkal könnyebbé és kényelmesebbé teszik az ütemezett feladatok létrehozását. Tehát hozzunk létre egy feladatot, amely naponta 10 órakor végrehajtja a szkriptünket a rendszerfiók (SYSTEM) használatával. Ezt a feladatot egy emelt szintű jogosultságokkal rendelkező fiók fogja végrehajtani.
$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings
$User= "NT AUTHORITYSYSTEM" # Specify the account to run the script
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:PSStartupScript.ps1" # Specify what program to run and with its parameters
Register-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the taskTovábbi triggerbeállítások, amelyek hasznosak lehetnek új feladatok létrehozásában:
- -AtStartup - A Windows indításakor elindítja a feladatot.
- -AtLogon - Kiváltja a feladatot, amikor a felhasználó bejelentkezik.
- -Egyszer - Egyszer elindítja a feladatot. Az ismétlési intervallumot a -RepetitionInterval paraméterrel állíthatja be.
- -Hetente - Hetente egyszer indítja el a feladatot.
Vegye figyelembe, hogy ezekkel a parancsmagokkal nem lehet végrehajtani „egy eseményen”, ahogyan azt a Feladatütemező eszközzel tettük. Az „on an event” triggerekkel rendelkező PowerShell-szkriptek sokkal bonyolultabbak, ezért ez valódi hátránya a PowerShell használatának a Feladatütemező helyett.
Következtetés
Amint látja, könnyű ütemezett feladatokat létrehozni a Feladatütemező vagy a PowerShell segítségével. Ne feledje azonban, hogy az ütemezett feladatok nem megfelelő módosítása szolgáltatáskimaradásokat és ronthatja a szerver teljesítményét. Ezért elengedhetetlen az ütemezett feladatok minden változásának nyomon követése.





