Ustvarjanje opravila za načrtovanje z uporabo PowerShell-a

Večina uporabnikov in skrbnikov se uporablja za uporabo vmesnika grafične konzole za ustvarjanje načrtovane naloge Schedulerja (Windows Scheduler). Taskschd.msc. Vendar pa je v različnih skriptah in avtomatiziranih opravilih veliko bolj priročno uporabiti zmogljivosti PowerShell-a za ustvarjanje nalog planerja. V tem članku bomo pokazali, kako lahko s programom PowerShell (različici 2.0 in 4.0) ustvarite nova opravila Windows planerja, izvozite naloge v datoteko xml in jih uvozite v druge računalnike.

Recimo, da je naša naloga ustvariti nalogo načrtovalca, ki bi se začela, ko se sistem zažene (ali ob določenem času), bi morala naloga opraviti nekaj skripta ali ukaza PowerShell.

Vsebina:

  • Kako ustvariti delo planerja v PowerShell 2.0
  • Kako ustvariti opravilo planerja v programu PowerShell 4.0 (Windows Server 2012 R2)
  • Izvoz opravila planerja v datoteko XML
  • Uvoz opravila planerja iz datoteke XML

Kako ustvariti delo planerja v PowerShell 2.0

V Powershell 2.0 (Windows 7, Windows Server 2008 R2) ustvarite ponavljajoče se opravilo (ScheduledJob) iz PowerShell-a, zato morate uporabiti vmesnik COM Urnik.Storitev.  V tem primeru bomo ustvarili nalogo načrtovalca, ki bi moral ob zagonu izvesti določeno datoteko s skriptom PowerShell. Naloga se izvaja s pravicami sistema (sistem).

$ TaskName = "NewPsTask"
$ TaskDescription = "Zagon skripta PowerShell iz planerja"
$ TaskCommand = "c: \ windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe"
$ TaskScript = "C: \ PS \ StartupScript.ps1"
$ TaskArg = "-S skrita oknaStyle -NonInteractive -Executionpolicy neomejeno -file $ TaskScript"
$ TaskStartTime = [datum] :: Now.AddMinutes (1)
$ service = new-object -ComObject ("Schedule.Service")
$ service.Connect ()
$ rootFolder = $ service.GetFolder ("\")
$ TaskDefinition = $ service.NewTask (0)
$ TaskDefinition.RegistrationInfo.Description = "$ TaskDescription"
$ TaskDefinition.Settings.Enabled = $ true
$ TaskDefinition.Settings.AllowDemandStart = $ true
$ sprožilci = $ TaskDefinition.Triggers
#http: //msdn.microsoft.com/en-us/library/windows/desktop/aa383915 (v = vs.85) .aspx
$ sprožilec = $ sprožilec.Ustvari (8)

Opomba. V tem primeru se ustvari sprožilec, ki deluje, ko se sistem zažene - koda 8. Popoln seznam kod:

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

$ sprožilca.StartBoundary = $ TaskStartTime.ToString ("yyyy-MM-dd'T'HH: mm: ss")
$ sprožilec.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, "Sistem", $ null, 5)

Po izvedbi ukaza se bo v planerju pojavila nova naloga NewPsTask.

Sintaksa ukazov je precej zapletena, zato so razvijalci dodali ločen modul v paketu PowerShell (del paketa Windows 7 Resource Kit) Taskcheduler, kar močno poenostavi postopek ustvarjanja delovnih mest planerja iz PowerShell 2.0. Po namestitvi modula lahko ustvarite nalogo z naslednjimi ukazi:

Uvoz-modul TaskScheduler $ task = Nova naloga
$ task.Settings.Hidden = $ true
Add-TaskAction -Task $ task -Path C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe -Arguments "-File C: \ MyScript.ps1"
Add-TaskTrigger -Task $ naloga -Dnevno - Ob 10:00
Registracija-ScheduledJob -Name ”ShTaskPs” -Task $ naloga

Kako ustvariti opravilo planerja v programu PowerShell 4.0 (Windows Server 2012 R2)

V sistemih Windows Server 2012 R2 in Windows 8.1 sta PowerShell 3.0 in 4.0 predstavila nove ukazne ročice za ustvarjanje opravil načrtovalca: Novo-ScheduledTaskTrigger, Registrirajte se-ScheduledTask. Ustvarjanje naloge za načrtovanje je zdaj veliko lažje in bolj priročno..

Ustvarimo nalogo z imenom StartupScript_PS, ki vsak dan ob 10. uri iz sistemskega računa (SYSTEM) izvaja skript PoSh, shranjen v datoteki C: \ PS \ StartupScript.ps1. Naloga se bo izvajala s povišanimi privilegiji (daw "Teči z najvišjimi privilegiji").

$ Trigger = Novo načrtovanoTaskTrigger -Ob 10:00 zjutraj
$ User = "NT ORGAN \ SISTEM"
$ Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ StartupScript.ps1"
Registriraj-ScheduledTask -TaskName "StartupScript_PS" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest -Force

Namig. Če želite, da se naloga zažene vsakič, ko se sistem zažene, mora biti prvi ukaz ta:
$ Trigger = Novo načrtovanoTaskTrigger -AtStartup
Če ste pri prijavi uporabnika:
$Trigger = Novo načrtovanoTaskTrigger -AtLogon

Preverite, ali se je v planerju pojavila nova naloga.

Izvoz opravila planerja v datoteko XML

PowerShell ponuja možnost izvoza trenutnih nastavitev katere koli naloge planerja v besedilno datoteko XML. Tako lahko naložite parametre katere koli naloge in razdelite nalogo poljubne zapletenosti na druge računalnike v omrežju. Nalogo lahko izvozite tako iz GUI-ja za načrtovanje opravil kot iz ukazne vrstice PowerShell.

Ukaz za izvoz opravila z imenom StartupScript_PS v datoteko StartupScript_PS.xml:

Izvozi-ScheduledTask "StartupScript_PS" | odstranjena datoteka c: \ tmp \ StartupScript_PS.xml

Cmdlet Export-ScheduledTask ne bo deloval v PowerShell 2.0, zato je v sistemu Windows 7/2008 R2 bolje uporabiti vgrajeni pripomoček za izvoz nastavitev opravila v datoteko XML schtasks, katerega izhod je treba preusmeriti v besedilno datoteko:

schtasks / poizvedba / tn "NewPsTask" / xml >> "c: \ tmp \ NewPsTask.xml"

Namig. Spomnimo se, da smo že prej za ustvarjanje in upravljanje nalog načrtovalca v glavnem uporabljali zmogljivosti vgrajene pripomočke za konzolo schtasks.exe.

Uvoz opravila planerja iz datoteke XML

Ko izvozite nastavitve opravila planerja v datoteko XML, ga lahko uvozite v kateri koli drug računalnik v omrežju s pomočjo grafične konzole, SchTasks.exe ali PowerShell.

Cmdlet vam bo pomagal uvoziti parametre opravila in ga registrirati. Načrtovalnik, ki ga načrtuje.

Registriraj-ScheduledTask -Xml (Get-Content "\\ Server1 \ public \ NewPsTask.xml" | out-string) -TaskName "NewPsTask"

V programu PowerShell 2.0 (Windows 7 / Server 2008 R2) je uvoz orodja lažji tudi s pripomočkom schtasks. Prva ekipa bo ustvarila novo nalogo. Drugi jo bo takoj sprožil (ne da bi čakal, da sprožilec deluje).

schtasks / create / tn "NewPsTask" / xml "\\ Server1 \ public \ NewPsTask.xml" / ru corp \ aaivanov / rp Pa $$ w0rd
schtasks / Run / TN "NewPsTask"

Opomba. Upoštevajte, da ta primer prikazuje podatke o računu, pod katerimi se bo naloga začela. Če podatki o računu niso navedeni, potem zato v nalogi niso shranjeni, zahtevani bodo ob uvozu.