Adam The Automator

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.

új ütemezett Feladatművelet létrehozása

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.

Trigger létrehozása (naponta 3 órakor)

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 -Actionparaméter szükséges a$taskAction nevű változóban tárolt feladat műveletobjektum átadásához. A -Triggerparamé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.

az új ütemezett feladat regisztrálása

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.

az új ütemezett feladat a Feladatütemező alkalmazásban látható módon

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.

az ütemezett feladat információk beszerzése.

é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.

az Ütemezett feladat futtatása

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éke Win8. 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 a Win8 é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 biztonsági beállítás, a felhasználói fiók és a Kompatibilitási beállítások

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.

az ütemezett feladat frissítése több triggerrel

és amint az alább látható, most két Trigger van az ExportAppLog ütemezett feladatában.

az Ütemezett feladat több triggerrel

ü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 biztonsági mentése

ü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.

annak ellenőrzése, hogy az ütemezett feladat már nem létezik-e

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: ActionTriggerSettings, é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 InputObjectparamé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.

törölt ütemezett feladat visszaállítása XML biztonsági mentésből

most az ütemezett feladat regisztrálva van a rendszerben. Az alábbi képernyőkép a visszaállított ütemezett feladatot mutatja.

a visszaállított ütemezett feladat megtalálása

Ö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.

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

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