Izrada posla planera pomoću PowerShell-a

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

$ 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

vijeće. Ako želite da se zadatak pokrene svaki put kada se sustav pokrene, prva naredba trebala bi biti takva:
$ 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"

vijeće. Podsjetimo da su se ranije, za stvaranje i upravljanje zadacima planera, uglavnom koristile mogućnosti integriranog uslužnog programa konzole schtasks.exe.

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"

primjedba. Napominjemo da ovaj primjer prikazuje podatke o računu pod kojima će se zadatak pokrenuti. Ako podaci o računu nisu navedeni, onda zato ne pohranjuju se u zadatku, a bit će zatraženi pri uvozu.