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.