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_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 |
$ 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
$ 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"
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"