Većina korisnika i administratora koriste se sučeljem grafičke konzole za izradu zakazanog zadatka Schedulera (Windows Scheduler). Taskschd.msc. Međutim, u raznim skriptama i automatiziranim zadacima mnogo je praktičnije koristiti mogućnosti PowerShell-a za stvaranje zadataka planera. U ovom ćemo članku pokazati kako pomoću PowerShell-a (verzije 2.0 i 4.0) kreirate nove zadatke za planiranje sustava Windows, izvozite zadatke u xml datoteku i uvozite ih na druga računala.
Pretpostavimo da je naš zadatak stvoriti zadatak planera koji bi se pokrenuo kada se sustav pokrene (ili u određeno vrijeme), zadatak bi trebao izvršiti neku skriptu ili naredbu PowerShell-a..
sadržaj:
- Kako stvoriti posao planera u PowerShell 2.0
- Kako stvoriti posao planera u PowerShellu 4.0 (Windows Server 2012 R2)
- Izvezi posao Planera u XML datoteku
- Uvezi posao planera iz XML datoteke
Kako stvoriti posao planera u PowerShell 2.0
U Powershell 2.0 (Windows 7, Windows Server 2008 R2) da biste stvorili ponavljajući posao (ScheduledJob) iz PowerShell-a, morate koristiti COM sučelje raspored.usluga. U ovom ćemo primjeru stvoriti zadatak planera koji bi u vrijeme dizanja trebao izvršiti određenu datoteku sa PowerShell skriptu. Zadatak se izvodi s pravima na sustavu (Sustav).
$ TaskName = "NewPsTask"
$ TaskDescription = "Pokretanje skripte PowerShell-a iz rasporeda"
$ TaskCommand = "c: \ windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe"
$ TaskScript = "C: \ PS \ StartupScript.ps1"
$ TaskArg = "Skriveni prozor prozora -Neinterektivan -Izvršenjepolitički neograničen -file $ TaskScript"
$ TaskStartTime = [datum] :: Sada.AddMinutes (1)
$ service = new-object -ComObject ("Raspored.Service")
$ service.Connect ()
$ rootFolder = $ service.GetFolder ("\")
$ TaskDefinition = $ usluga.Novi zadatak (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
$ okidač = $ okidači. Stvorite (8)
primjedba. U tom se slučaju stvara okidač koji djeluje kada se sustav diže - kod 8. Potpuni popis kodova:
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 |
$ okr.StartBoundary = $ TaskStartTime.ToString ("gggg-MM-dd'T'HH: mm: ss")
$ okidač.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, "Sustav", $ nula, 5)
Nakon izvršenja naredbe, novi zadatak NewPsTask pojavit će se u planeru.
Sintaksa naredbi je prilično složena, pa su programeri dodali zaseban modul u PowerShell Pack (dio Windows 7 Resource Kit) TaskScheduler, što uvelike pojednostavljuje proces stvaranja poslova planera iz PowerShell 2.0. Nakon što instalirate modul, možete kreirati zadatak pomoću sljedećih naredbi:
Uvoz-modul TaskScheduler $ zadatak = Novi zadatak
$ task.Settings.Hidden = $ true
Add-TaskAction -Task $ task -Path C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe -Argumes "-File C: \ MyScript.ps1"
Add-TaskTrigger -Task $ zadatak -Dnevno - U “10:00”
Registrirajte-ScheduledJob -Name ”ShTaskPs” -Task $ zadatak
Kako stvoriti posao planera u PowerShellu 4.0 (Windows Server 2012 R2)
U Windows Server 2012 R2 i Windows 8.1, PowerShell 3.0 i 4.0 uveli su nove cmdlete za stvaranje poslova planera: novi-ScheduledTaskTrigger, Registracija-ScheduledTask. Izrada zadatka za planiranje sada je mnogo lakša i praktičnija..
Kreirajmo zadatak koji se zove StartupScript_PS, a koji svaki dan u 10:00 iz sistemskog računa (SYSTEM) pokreće PoSh skriptu pohranjenu u datoteci C: \ PS \ StartupScript.ps1. Zadatak će se izvoditi s povišenim povlasticama (daw "Pokreni s najvišim povlasticama").
$ Trigger = Novo-zakazaniTaskTrigger -Ona 10:00 -Dnevno
$ User = "NT AUTHORITY \ SYSTEM"
$ Action = Novo-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ StartupScript.ps1"
Registrirajte-ScheduledTask -TaskName "StartupScript_PS" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest -Force
$ Trigger = Novo-RasporedTaskTrigger -AtStartup
Ako se prijavite:
$
Trigger = Novo-RasporedTaskTrigger -AtLogon
Provjerite je li se u planeru pojavio novi zadatak.
Izvezi posao Planera u XML datoteku
PowerShell pruža mogućnost izvoza trenutnih postavki bilo kojeg zadatka planiranja u XML tekstualnu datoteku. Dakle, možete učitati parametre bilo kojeg zadatka i zadatak bilo koje složenosti distribuirati na ostala računala na mreži. Zadatak se može izvesti i iz korisničkog sučelja Raspored zadataka i iz naredbenog retka PowerShell.
Naredba za izvoz posla pod nazivom StartupScript_PS u datoteku StartupScript_PS.xml:
Izvozno-zakazani zadatak "StartupScript_PS" | datoteka datoteke c: \ tmp \ StartupScript_PS.xml
Cmdlet Export-ScheduledTask neće raditi u PowerShellu 2.0, pa je u sustavu Windows 7/2008 R2 bolje koristiti ugrađeni uslužni program za izvoz postavki posla u XML datoteku schtasks, čiji izlaz treba preusmjeriti u tekstualnu datoteku:
schtasks / query / tn "NewPsTask" / xml >> "c: \ tmp \ NewPsTask.xml"
Uvezi posao planera iz XML datoteke
Nakon što se postavke posla planera izveze u XML datoteku, one se mogu uvesti na bilo koje drugo računalo na mreži pomoću grafičke konzole, SchTasks.exe ili PowerShell.
Cmdlet će vam pomoći uvesti parametre zadatka i registrirati ga. Register ScheduledTask.
Registrirajte-ScheduledTask -Xml (Get-Content "\\ Server1 \ public \ NewPsTask.xml" | out-string) -TaskName "NewPsTask"
U PowerShell 2.0 (Windows 7 / Server 2008 R2) uvoz posla je također lakši sa uslužnim programom schtasks. Prvi tim će stvoriti novi zadatak. Drugi će ga odmah pokrenuti (bez čekanja da okidač radi).
schtasks / create / tn "NewPsTask" / xml "\\ Server1 \ public \ NewPsTask.xml" / ru corp \ aaivanov / rp Pa $$ w0rd
schtasks / Run / TN "NewPsTask"