A legtöbb felhasználó és rendszergazda hozzászokott a grafikus konzol felületéhez, hogy ütemezett ütemező feladatot hozzon létre (Windows ütemező). Taskschd.msc. Különböző szkriptekben és automatizált feladatokban azonban sokkal kényelmesebb a PowerShell képességeinek felhasználása ütemező feladatok létrehozására. Ebben a cikkben bemutatjuk, hogyan lehet a PowerShell (2.0 és 4.0 verziók) segítségével létrehozni új Windows ütemezői feladatokat, exportálni a feladatokat egy xml fájlba és importálni őket más számítógépekre..
Tegyük fel, hogy feladatunk egy olyan ütemező feladat létrehozása, amely akkor indul, amikor a rendszer elindul (vagy egy bizonyos időpontban), a feladatnak végre kell hajtania egy PowerShell szkriptet vagy parancsot..
Tartalom:
- Ütemező job létrehozása a PowerShell 2.0 alkalmazásban
- Ütemező job létrehozása a PowerShell 4.0 rendszerben (Windows Server 2012 R2)
- Ütemező feladat exportálása az XML fájlba
- Importáljon ütemező feladatot egy XML fájlból
Ütemező job létrehozása a PowerShell 2.0 alkalmazásban
A Powershell 2.0 (Windows 7, Windows Server 2008 R2) rendszeren egy ismétlődő feladat (ScheduledJob) létrehozásához a PowerShell programból a COM felületet kell használnia. ütemterv.szolgáltatás. Ebben a példában létrehozunk egy ütemező feladatot, amelynek indításkor egy bizonyos fájlt végre kell hajtania egy PowerShell szkripttel. A feladatot rendszerjogokkal hajtják végre (rendszer).
$ TaskName = "NewPsTask"
$ TaskDescription = "PowerShell szkript futtatása az ütemezőtől"
$ TaskCommand = "c: \ windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe"
$ TaskScript = "C: \ PS \ StartupScript.ps1"
$ TaskArg = "-A WindowStyle Rejtett -NonInteractive -Executionpolicy korlátlan -file $ TaskScript"
$ TaskStartTime = [datetime] :: Now.AddMinutes (1)
$ service = new-object -ComObject ("Ütemezés.Szolgáltatás")
$ service.Connect ()
$ rootFolder = $ service.GetFolder ("\")
$ TaskDefinition = $ service.NewTask (0)
$ TaskDefinition.RegistrationInfo.Description = "$ TaskDescription"
$ TaskDefinition.Settings.Enabled = $ true
$ TaskDefinition.Settings.AllowDemandStart = $ true
$ triggers = $ TaskDefinition.Triggers
#http: //msdn.microsoft.com/en-us/library/windows/desktop/aa383915 (v = vs.85) .aspx
$ trigger = $ triggers.Create (8)
megjegyzés. Ebben az esetben egy trigger jön létre, amely akkor működik, amikor a rendszer elindul - 8. kód. A kódok teljes listája:
TASK_TRIGGER_EVENT | 0 |
TASK_TRIGGER_TIME | 1 |
TASK_TRIGGER_DAILY | 2 |
TASK_TRIGGER_WEEKLY | 3 |
TASK_TRIGGER_MONTHLY | 4 |
TASK_TRIGGER_MONTHLYDOW | 5 |
TASK_TRIGGER_IDLE | 6 |
TASK_TRIGGER_REGISTRATION | 7 |
TASK_TRIGGER_BOOT | 8 |
TASK_TRIGGER_LOGON | 9 |
TASK_TRIGGER_SESSION_STATE_CHANGE | 11 |
$ trigger.StartBoundary = $ TaskStartTime.ToString ("éééé-hh-nnhHN: HH: ss")
$ trigger.Enabled = $ true
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa381841(v=vs.85).aspx
$ Action = $ TaskDefinition.Actions.Create (0)
$ action.Path = "$ TaskCommand"
$ action.Arguments = "$ TaskArg"
#http: //msdn.microsoft.com/en-us/library/windows/desktop/aa381365 (v = vs.85) .aspx
$ rootFolder.RegisterTaskDefinition ("$ TaskName", $ TaskDefinition, 6, "System", $ null, 5)
A parancs végrehajtása után egy új NewPsTask feladat jelenik meg az ütemezőben.
A parancs szintaxisa meglehetősen bonyolult, ezért a fejlesztők külön modult adtak a PowerShell csomaghoz (a Windows 7 Resource Kit része) TaskScheduler, ami nagyban leegyszerűsíti az ütemező jobok létrehozásának folyamatát a PowerShell 2.0-ból. A modul telepítése után létrehozhat egy feladatot a következő parancsok segítségével:
Import-Module TaskScheduler $ task = Új-Feladat
$ task.Settings.Hidden = $ true
Add-TaskAction - $ feladat -C elérési út: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe -Argumentumok „-Fájl C: \ MyScript.ps1”
Add-TaskTrigger - $ feladat -napi -Nem „10:00”
Register-ScheduledJob -Név “ShTaskPs” -Task $ feladat
Ütemező job létrehozása a PowerShell 4.0 rendszerben (Windows Server 2012 R2)
A Windows Server 2012 R2 és a Windows 8.1 rendszerben a PowerShell 3.0 és 4.0 új parancsmagokat vezetett be ütemező jobok létrehozásához: új-ScheduledTaskTrigger, Regisztráció-ScheduledTask. Az ütemező feladat létrehozása sokkal könnyebb és kényelmesebb..
Készítsünk egy StartupScript_PS nevű feladatot, amely minden nap 10:00 órától a rendszerfiók alatt (SYSTEM) futtatja a C: \ PS \ StartupScript.ps1 fájlban tárolt PoSh szkriptet. A feladat emelt jogosultságokkal fog futni (daw "Futtatás a legmagasabb jogosultságokkal").
$ Trigger = New-ScheduledTaskTrigger - 10:00 -ig
$ Felhasználó = "NT HATÓSÁG \ RENDSZER"
$ Művelet = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ StartupScript.ps1"
Regisztrálás-Ütemezett Feladat -TaskName "StartupScript_PS" -Trigger $ Trigger -User $ Felhasználó -Action $ Akció -RunLevel Legmagasabb -Force
$ Trigger = New-ScheduledTaskTrigger -AtStartup
Ha felhasználói bejelentkezéskor:
$
Trigger = New-ScheduledTaskTrigger -AtLogon
Ellenőrizze, hogy új feladat megjelent-e az ütemezőben.
Ütemező feladat exportálása az XML fájlba
A PowerShell lehetőséget nyújt az ütemező feladatok jelenlegi beállításainak exportálására XML szövegfájlba. Így bármilyen feladat paramétereit feltöltheti, és bármilyen komplexitású feladatot eloszthatja a hálózat többi számítógépére. A feladat exportálható mind a Task Scheduller GUI-ból, mind a PowerShell parancssorból.
StartupScript_PS nevű job exportálása a StartupScript_PS.xml fájlba:
Export-ScheduledTask "StartupScript_PS" | out-file c: \ tmp \ StartupScript_PS.xml
Az Export-ScheduledTask parancsmag nem fog működni a PowerShell 2.0 verzióban, így a Windows 7/2008 R2 esetében jobb a beépített segédprogramot használni a feladat beállításainak XML-fájlba történő exportálásához. Schtasks, amelynek kimenetét egy szöveges fájlba kell irányítani:
schtasks / query / tn "NewPsTask" / xml >> "c: \ tmp \ NewPsTask.xml"
Importáljon ütemező feladatot egy XML fájlból
Miután az ütemező job beállításait XML fájlba exportálta, a grafikus konzol, a SchTasks.exe vagy a PowerShell használatával a hálózat bármely más számítógépére importálható..
A parancsmag segít a feladat paramétereinek importálásában és regisztrálásában. Register-ScheduledTask.
Register-ScheduledTask -Xml (Get-Content “\\ Server1 \ public \ NewPsTask.xml” | out-string) -TaskName "NewPsTask"
A PowerShell 2.0-ban (Windows 7 / Server 2008 R2) a feladat importálása is könnyebb a schtasks segédprogrammal. Az első csapat új feladatot hoz létre. A második azonnal elindítja (anélkül, hogy megvárná az indító működését).
schtasks / create / tn "NewPsTask" / xml "\\ Server1 \ public \ NewPsTask.xml" / ru corp \ aaivanov / rp Pa $$ w0rd
schtasks / Run / TN "NewPsTask"