Ütemező feladat létrehozása a PowerShell használatával

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_EVENT0
TASK_TRIGGER_TIME1
TASK_TRIGGER_DAILY2
TASK_TRIGGER_WEEKLY3
TASK_TRIGGER_MONTHLY4
TASK_TRIGGER_MONTHLYDOW5
TASK_TRIGGER_IDLE6
TASK_TRIGGER_REGISTRATION7
TASK_TRIGGER_BOOT8
TASK_TRIGGER_LOGON9
TASK_TRIGGER_SESSION_STATE_CHANGE11

$ 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

tanács. Ha azt akarja, hogy a feladat a rendszer indulásakor minden alkalommal futjon, az első parancsnak a következőnek kell lennie:
$ 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"

tanács. Emlékezzünk vissza, hogy korábban az ütemező feladatok létrehozásához és kezeléséhez a beépített konzol segédprogram schtasks.exe képességeit főleg.

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"

megjegyzés. Felhívjuk figyelmét, hogy ez a példa azt a fiókinformációt mutatja, amely alatt a feladat elindul. Ha a számlainformáció nincs megadva, akkor azért van nem tárolódnak a feladatban, importáláskor kérésre kerülnek.