sok ütemezett feladatot kell létrehoznia, vagy automatizálnia kell az ütemezett feladatok létrehozását? Ha igen, szerencséd van. Ebben a cikkben megtudhatja, hogyan kezelheti az ütemezett feladatokat a PowerShell segítségével.
az egyszerű műveleteket végrehajtó Ütemezett feladatok gyorsan elvégezhetők és elég kényelmesek ahhoz, hogy megismételjék a Task Scheduler app interface (GUI) használatával. Előfordulhat azonban, hogy a rendszeradminisztrátoroknak vagy a fejlesztőknek bonyolultabb feladatokat kell telepíteniük több ütemezéssel, triggerrel vagy argumentummal.
szerencsére a PowerShell segítségével ütemezett feladatokat hozhat létre és kezelhet. Az ütemezett feladatok kezelése a PowerShell segítségével a Windowsba beépített ScheduledTasks modul használatával lehetséges.
Tartalomjegyzék
előfeltételek
mivel ez egy tanulás-by-doing típusú cikk, van néhány előfeltétel, így követheti végig. Az alábbiakban bemutatjuk a PowerShell ütemezett feladatok PowerShell használatával történő létrehozásának követelményeit.
- a cikkben szereplő példák a Windows 10 rendszert használják. De a Windows Server 2012 és újabb is megteheti ugyanezt.
- Windows PowerShell 5.1 vagy PowerShell 7.
- segítene, ha lenne olyan szkriptszerkesztője, mint a Visual Studio Code, A Notepad++ vagy a Windows PowerShell ISE.
új ütemezett feladat létrehozása
az ütemezett feladat működéséhez legalább két összetevő szükséges: művelet és trigger. A biztonsági környezet és a kapcsolódó beállítások hozzáadása nem kötelező. A jobb megértés érdekében olvassa el az egyes ütemezett feladatösszetevők rövid magyarázatát:
- művelet – az ütemezett tevékenység által végrehajtott művelet. A művelet általában egy program vagy szkript futtatása. Egy ütemezett tevékenységnek több művelete is lehet.
- Trigger – vezérlők, amikor az ütemezett feladat fut. A triggerek időalapúak lehetnek, például a napi vagy óránkénti ismétlődés ütemezésének beállítása. A triggerek tevékenységalapúak is lehetnek, amelyek olyan észlelt tevékenységeken alapuló feladatot futtatnak, mint a számítógép indítása, a felhasználó bejelentkezik vagy naplózott események.
- Principal – az ütemezett feladat futtatásához használt biztonsági környezet vezérlése. A megbízó többek között tartalmazza a felhasználói fiókot és az ütemezett tevékenység által használt szükséges jogosultságot.
- beállítások – olyan beállítások és feltételek halmaza, amelyek szabályozzák az ütemezett tevékenység viselkedését. Például testreszabhatja a feladatot, hogy eltávolításra kerüljön egy egymást követő napok száma után, amikor a tevékenység fel nem használt.
ütemezett feladat létrehozása során a fő és a beállítások nem kifejezetten szükségesek. Ehelyett az alapértelmezett értékeket használják.
Feladatművelet létrehozása
Ha azt szeretné, hogy egy ütemezett tevékenység tegyen valamit, hozzon létre új feladatműveletet. Ebben a példában létrehoz egy feladatot, amely felhívja a PowerShell-t.exe és futtasson egy szkriptet. Győződjön meg róla, hogy készen áll a szkriptszerkesztőre.
vegye figyelembe, hogy az alábbi parancsfájl csak véletlenszerű példa, és nem szükséges használni. Használhat bármilyen szkriptet, amit akar. Az alábbi parancsfájl használata azonban könnyen ellenőrizhető eredményt hoz létre, amely megerősítheti, hogy az ütemezett feladat működött-e.
az alábbi példa parancsfájl végrehajtásakor az alkalmazás eseménynaplójából kapja meg a tíz legfrissebb eseményt. Ezután exportálja az eseményeket egy új XML fájlba a c:\temp mappa. Másolja az alábbi kódot, illessze be a szkriptszerkesztőbe, és mentse a Get-LatestAppLog.ps1 fájlnévvel bármelyik kívánt mappába.
az alábbi kód a New-ScheduledTaskAction
új ütemezett feladat műveletobjektum létrehozásához használja a $taskAction
változóban. Ez a művelet meghívja apowershell.exe
végrehajtható fájlt, és átadja az argumentumot a C:\scripts\Get-LatestAppLog.ps1.
másolja a fenti parancsot, és futtassa a PowerShellben. A $taskAction
változóban kapott objektumnak úgy kell kinéznie, mint az alábbi képernyőképen.
Trigger hozzáadása
most, hogy létrehozott egy feladatműveletet, a következő lépés annak meghatározása, hogy a feladatnak mikor kell futnia. A trigger létrehozásához használt parancsmag a New-ScheduledTaskTrigger
parancsmag. Az alábbi parancs létrehoz egy triggert, amely naponta 3 órakor fut. Másolja és futtassa a kódot a PowerShell – ben.
# Create a new trigger (Daily at 3 AM)$taskTrigger = New-ScheduledTaskTrigger -Daily -At 3PM$tasktrigger
a $tasktrigger
változóban kapott objektumnak ugyanúgy kell kinéznie, mint az alábbi képen.
a feladat regisztrálása
eddig létrehozta az alapkövetelményeket új ütemezett feladat létrehozása. A következő lépés az ütemezett feladat létrehozása és regisztrálása a rendszerben.
az alábbi kód a Register-ScheduledTask
parancsmagot használja az ütemezett feladat regisztrálásához. A -Action
paraméter szükséges a$taskAction
nevű változóban tárolt feladat műveletobjektum átadásához. A -Trigger
paraméter szükséges a$taskTrigger
változó tartalmának átadásához.
# Register the new PowerShell scheduled task# The name of your scheduled task.$taskName = "ExportAppLog"# Describe the scheduled task.$description = "Export the 10 newest events in the application log"# Register the scheduled taskRegister-ScheduledTask ` -TaskName $taskName ` -Action $taskAction ` -Trigger $taskTrigger ` -Description $description
másolja a fenti kódot, és futtassa a PowerShellben. Ennek eredményeként az új ütemezett feladat regisztrálva van, az alábbiak szerint.
a feladat futtatása
az ütemezett feladat létrehozása után meg kell erősítenie, hogy az ütemezett feladat feladat már létezik a rendszerben. Nyissa meg a Feladatütemezőt, és keresse meg az ütemezett feladatot a listából. Látnia kell a regisztrált feladatot a listán.
a regisztrált ütemezett feladat létezését az alábbi PowerShell parancs futtatásával is megerősítheti.
Get-ScheduledTaskInfo -TaskName ExportAppLog
ezután hasonló kimenetet kell látnia, mint az alábbi eredmény képernyőképe.
és végül az új ütemezett feladatnak azon kell dolgoznia, hogy megállapítsa, hogy az, amit eddig tett, sikeres volt-e. Az ütemezett feladat teszteléséhez megvárhatja a következő futási ütemezést, vagy az alábbi parancs segítségével manuálisan aktiválhatja.
Start-ScheduledTask -TaskName ExportAppLog
a kód futtatása után hasonló eredményt kell látnia, mint az alább látható. Mint látható, a kód futtatása XML fájlt hozott létre, ami azt jelzi, hogy az ütemezett feladat a várt módon működött.
meglévő ütemezett feladat frissítése
az ütemezett feladat létrehozása után szükség lehet annak egyes aspektusainak frissítésére valamikor. Lehet, hogy egy órával korábban szeretné futtatni, vagy megváltoztathatja a szkriptfájl helyét. Ezek az ütemezett feladat néhány szükséges módosítása.
a következő szakaszokban megtudhatja, hogyan módosíthatja a meglévő regisztrált ütemezett feladatokat a PowerShell használatával.
A felhasználói fiók, A biztonsági beállítások és a Kompatibilitási beállítások módosítása
az előző szakaszban az ütemezett feladat ugyanabban a felhasználói fiókkörnyezetben fut, mint amely létrehozta. Mi van, ha a feladatnak egy másik felhasználói fiókkal kell futnia, például egy szolgáltatási fiókkal.
ebben a példában az ütemezett feladat biztonsági beállításait az alábbi beállításokra módosítja.
- az ütemezett feladat futtatásához módosítania kell a felhasználói fiókot.
- engedélyezze a feladat futtatását, függetlenül attól, hogy a felhasználó bejelentkezett-e vagy sem.
- futtassa a legmagasabb szintű jogosultságokkal.
- állítsa be a feladat kompatibilitását Windows 10-re.
az alábbi kód első sora létrehoz egy fő objektumot az új felhasználói fiókkal, és beállítja, hogy a feladat a legmagasabb jogosultságokkal fusson. Ügyeljen arra, hogy szükség szerint módosítsa a -UserID
paraméter értékét. A második sor konfigurálja a feladat kompatibilitását a Windows 10 rendszerrel.
végül a harmadik sor frissíti a ExportAppLog
**ütemezett feladatot a the $taskPrincipal
és $taskSettings
változókban tárolt értékek felhasználásával. Másolja az alábbi kódot, és futtassa a PowerShell-ben.
# Set the task principal's user ID and run level.$taskPrincipal = New-ScheduledTaskPrincipal -UserId 'DEVPC\svcTask' -RunLevel Highest# Set the task compatibility value to Windows 10.$taskSettings = New-ScheduledTaskSettingsSet -Compatibility Win8# Update the task principal settingsSet-ScheduledTask -TaskName 'ExportAppLog' -Principal $taskPrincipal -Settings $taskSettings
észre fogod venni, hogy a
-Compatibility
paraméter értékeWin8
. Ne keveredj össze. Úgy tűnik, hogy a Microsoft A Windows 8 óta nem frissítette a” legújabb ” verzióválasztást. Ennek ellenére aWin8
érték megadása Windows 10 kompatibilitást eredményez.
ezután az alábbi parancs a Set-ScheduledTask
parancsmagot használja a meglévő ExportAppLog
**ütemezett feladat frissítéséhez. Ügyeljen arra, hogy módosítsa a Jelszó értékét a -Password
paraméterben a felhasználói fiók helyes jelszavának használatához.
# Update the task user account and passwordSet-ScheduledTask -TaskName 'ExportAppLog' -User $taskPrincipal.UserID -Password 'PASSWORD'
a fenti parancs futtatása után az ütemezett feladat frissül. Ha ellenőrzi az ütemezett feladatot, megerősítheti, hogy a biztonsági beállítások megváltoztak.
a Trigger módosítása
néha a trigger ütemezését meg kell változtatni megváltozott. Talán néhány működési kiigazítás vagy erőforrás-optimalizálás miatt. Mindenesetre a PowerShell segítségével kiváltókat is cserélhet vagy hozzáadhat egy ütemezett feladathoz.
jelenleg az ütemezett ExportAppLog feladat minden nap 3 órakor indul. Tegyük fel, hogy meg kell változtatnia a trigger ütemezését napi 4:30-kor és 1:00-kor. Először létre kell hoznia két új feladatindító objektumot a két ütemezéshez.
$taskTrigger1 = New-ScheduledTaskTrigger -Daily -At 4:30PM$taskTrigger2 = New-ScheduledTaskTrigger -Daily -At 1:00AM
ezután az ütemezett feladat triggerjének frissítéséhez használja az alábbi parancsot. Észre fogod venni, hogy a-Trigger
paraméter elfogadja a két feladatindító objektumot, nevezetesen a$taskTrigger1
és a$taskTrigger2
.
Továbbá, mivel egy ütemezett feladatot frissít a felhasználói fiókhoz mentett jelszóval, meg kell adnia a -User
és -Password
értékeket.
Set-ScheduledTask -TaskName 'ExportAppLog' -Trigger $taskTrigger1,$taskTrigger2 -User 'DEVPC\svcTask' -Password 'PASSWORD'
Az alábbiakban látható a várt eredmény a kód futtatása után.
és amint az alább látható, most két Trigger van az ExportAppLog ütemezett feladatában.
ütemezett feladat törlése és visszaállítása
az Ütemezett feladatok idővel elavulttá válhatnak. Egy bizonyos ponton előfordulhat, hogy el kell végeznie a takarítást az ütemezett feladatokhoz. Ebben a részben megtudhatja, hogyan kezelheti az ütemezett feladat törlését a PowerShell-ben.
ütemezett feladat biztonsági mentése
az ütemezett feladatok törlése előtt célszerű először biztonsági másolatot készíteni. Az ütemezett feladatok biztonsági mentése visszaállítási pontot ad arra az esetre, ha a dolgok rosszul mennek.
nincs beépített parancsmag az ütemezett feladat biztonsági mentéséhez. De a PowerShellben minden objektum, és az objektumok fájlba exportálása lehetséges. Ha biztonsági másolatot kell készítenie egy objektumról egy fájlba, használja a Import-Clixml
parancsmagot.
az alábbi példakód exportálja az ExportAppLog nevű ütemezett feladatot egy fájlba. Meg lehet változtatni a fájl nevét és helyét egy a preferencia.
az alábbi kép a várt kimeneti XML fájlt jeleníti meg.
ütemezett feladat törlése
miután biztosította az ütemezett feladat biztonsági másolatát, most eltávolíthatja az ütemezett feladatot. Az alábbi kód törli az ütemezett feladatot az ExportAppLog névvel. Másolja az alábbi kódot, és futtassa a PowerShell-ben.
# Unregister the scheduled taskUnregister-ScheduledTask -TaskName 'ExportAppLog' -Confirm:$false
bár nem szükséges, mindig jó megerősíteni az ütemezett feladat törlésének eredményét. Az alábbi paranccsal ellenőrizheti, hogy az ütemezett feladat már nem létezik-e.
Get-ScheduledTask -TaskName 'ExportAppLog'
Ha az ütemezett feladat már nem létezik, akkor az alább látható kimenetet kell kapnia.
vegye figyelembe, hogy az ütemezett feladat biztonsági mentése nem tartalmaz jelszavakat.
ütemezett feladat visszaállítása
tehát törölte az ütemezett feladatot, majd kiderül, hogy nem kellett volna! Most mi lesz? Ez a fajta helyzet még jobban értékeli a biztonsági mentések fogalmát.
az ütemezett feladatot újra létrehozhatja az XML biztonsági mentési fájl segítségével a PowerShell segítségével. És itt van, hogyan lehet csinálni a visszaállítás.
először importálja az XML biztonsági mentést a PowerShell munkamenetbe. Az alábbi kód importálja a fájlt c:\temp\ExportAppLog.xml. Ennek eredményeként a$stBackup
változó tárolja az importált adatokat.
# Import the Schedule Task backup$stBackup = Import-Clixml -Path c:\temp\ExportAppLog.xml
ezután az alábbi kód segítségével állítsa vissza a Feladatkezelő LogOnType
értékét Interactive
értékre. A LogonType érték visszaállítása kritikus fontosságú a sikeres ütemezett feladat visszaállításához.
# Reset the logon type to "Run only when the user is logged on."$stBackup.Principal.LogonType = 'Interactive'
a következő lépés egy új ütemezett Feladatobjektum létrehozása. Az alábbi kód új ütemezett feladatot hoz létre. A $restoreTask
változó tárolja a kapott ütemezett feladatobjektumot.
észre fogod venni, hogy a paramétereknek átadott értékek a biztonsági mentésből importáltak. Az importált értékek a $restoreTask
változóban vannak. A paraméterek: Action
Trigger
Settings
, és Principal.
az ütemezett feladatobjektum létrehozása után ideje regisztrálni az ütemezett feladatot. A visszaállított ütemezett feladat regisztrálásához használja az alábbi kódot.
ebben a példában a feladat neve ‘ExportAppLog_restored.’A InputObject
paraméter elfogadja az ütemezett feladatobjektumot a$restoreTask
változóban. Győződjön meg róla, hogy a helyes user
és password
értékeket használja.
a kód elkészült. Másolja és futtassa a kódot a PowerShell-ben a törölt ütemezett feladat visszaállításához. Az alábbi képernyőkép a várt kimenetet mutatja a kód futtatása után.
most az ütemezett feladat regisztrálva van a rendszerben. Az alábbi képernyőkép a visszaállított ütemezett feladatot mutatja.
Összegzés
A Windows ütemezett feladatok funkciója kiváló eszköz a feladatok beállításához vagy munkahelyek. Létrehozhatja a legalapvetőbb bonyolultabb feladatokat. A beállítások és az opciók rugalmasak.
a PowerShell Ütemezett feladatok modul lehetővé teszi az ütemezett feladatok PowerShell parancsokkal történő beállítását. Ez a modul lehetőséget és eszközt biztosít az ütemezett feladatok programozására és telepítésére a helyi és távoli számítógépeken.
a Microsoft nem frissítette a ScheduledTasks modult, és néhány speciális beállítás még nem jelenik meg könnyen PowerShell-parancsmagként. Az egyik példa egy trigger létrehozása a ” munkaállomás feloldása.”De ezeket a speciális beállításokat a meglévő Feladatütemező CIM osztály használatával érheti el.
ennek ellenére a PowerShell Ütemezett feladatok modul továbbra is kiváló és alkalmas eszköz, amelyet hozzáadhat a PowerShell arzenáljához.