Създаване на работа за планиране с помощта на PowerShell

Повечето потребители и администратори са свикнали да използват интерфейса на графичната конзола, за да създадат планирана задача на Scheduler (Windows Scheduler). Taskschd.msc. Въпреки това, в различни скриптове и автоматизирани задачи е много по-удобно да се използват възможностите на PowerShell за създаване на задачи за планиране. В тази статия ще покажем как да използваме PowerShell (версии 2.0 и 4.0) за създаване на нови задачи за планиране на Windows, експортиране на задачи в xml файл и импортиране на други компютри.

Да предположим, че нашата задача е да създадем задача за планиране, която да започне, когато системата се стартира (или в определено време), задачата трябва да изпълни някакъв скрипт или команда PowerShell.

Съдържание:

  • Как да създадете задача за планиране в PowerShell 2.0
  • Как да създадете задача за планиране в PowerShell 4.0 (Windows Server 2012 R2)
  • Експортиране на работа на Scheduler в XML файл
  • Импортирайте задача за планиране от XML файл

Как да създадете задача за планиране в PowerShell 2.0

В Powershell 2.0 (Windows 7, Windows Server 2008 R2), за да създадете повтаряща се работа (ScheduledJob) от PowerShell, трябва да използвате COM интерфейса разписание.обслужване.  В този пример ще създадем задача за планиране, която по време на зареждане трябва да изпълни определен файл със скрипт на PowerShell. Задачата се изпълнява със системни права (Система).

$ TaskName = "NewPsTask"
$ TaskDescription = "Изпълнение на скрипт на PowerShell от планировчика"
$ TaskCommand = "c: \ windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe"
$ TaskScript = "C: \ PS \ StartupScript.ps1"
$ TaskArg = "-WindowStyle скрит -NonInteractive -Executionpolicy неограничен -file $ TaskScript"
$ TaskStartTime = [datetime] :: 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
$ triggers = $ TaskDefinition.Triggers
#http: //msdn.microsoft.com/en-us/library/windows/desktop/aa383915 (v = vs.85) .aspx
$ тригер = $ тригери.Създайте (8)

забележка. В този случай се създава задействане, което работи, когато системата се стартира - код 8. Пълен списък с кодове:

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

$ спусък.StartBoundary = $ TaskStartTime.ToString ("гггг-MM-dd'T'HH: mm: ss")
$ alarm.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, "Система", $ null, 5)

След като командата се изпълни, нова задача NewPsTask ще се появи в планировчика.

Синтаксисът на командите е доста сложен, така че разработчиците добавиха отделен модул към PowerShell Pack (част от ресурсния комплект за Windows 7) TaskScheduler, което значително опростява процеса на създаване на задания за планиране от PowerShell 2.0. След като инсталирате модула, можете да създадете задача, като използвате следните команди:

Import-Module TaskScheduler $ task = New-Task
$ task.Settings.Hidden = $ true
Add-TaskAction -Task $ task -Path C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe-Аргументи „-File C: \ MyScript.ps1“
Add-TaskTrigger -Task $ task -Daily -На "10:00"
Регистрация-ScheduledJob -Name ”ShTaskPs” -Task $ задача

Как да създадете задача за планиране в PowerShell 4.0 (Windows Server 2012 R2)

В Windows Server 2012 R2 и Windows 8.1, PowerShell 3.0 и 4.0 представиха нови командлети за създаване на задания за планиране: нов-ScheduledTaskTrigger, Регистрирайте се-планирана задача. Създаването на задача за планиране сега е много по-лесно и по-удобно..

Нека създадем задача, наречена StartupScript_PS, която всеки ден в 10:00 от под системния акаунт (SYSTEM) изпълнява скрипта PoSh, съхраняван във файла C: \ PS \ StartupScript.ps1. Задачата ще се изпълнява с повишени привилегии (daw "Run с най-високи привилегии").

$ Trigger = Ново планираноTaskTrigger -На 10:00 ч. -Дневно
$ User = "NT AUTHORITY \ SYSTEM"
$ Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ StartupScript.ps1"
Регистрация-ScheduledTask -TaskName "StartupScript_PS" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Най-високо-Force

съвет. Ако искате задачата да се стартира всеки път, когато системата се стартира, първата команда трябва да е така:
$ Trigger = Ново планираноTaskTrigger -AtStartup
Ако влезете в потребител:
$Trigger = Ново планираноTaskTrigger -AtLogon

Проверете дали в планиращия се е появила нова задача.

Експортиране на работа на Scheduler в XML файл

PowerShell предоставя възможност за експортиране на текущите настройки на всяка задача за планиране в текстов файл XML. По този начин можете да качвате параметрите на всяка задача и да разпределяте задачата с всякаква сложност на други компютри в мрежата. Задачата може да бъде експортирана както от GUI на график на задачите, така и от командния ред PowerShell.

Командата за експортиране на задача с име StartupScript_PS във файла StartupScript_PS.xml:

Export-ScheduledTask "StartupScript_PS" | изходящ файл c: \ tmp \ StartupScript_PS.xml

Командлерът Export-ScheduledTask няма да работи в PowerShell 2.0, така че в Windows 7/2008 R2 е по-добре да използвате вградената помощна програма за експортиране на настройките на заданието в XML файл schtasks, изходът от който трябва да бъде пренасочен към текстов файл:

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

съвет. Спомнете си, че по-рано, за създаване и управление на задачи за планиране, предимно се използваха възможностите на интегрираната конзолна програма schtasks.exe.

Импортирайте задача за планиране от XML файл

След като настройките на заданието за планиране се експортират в XML файл, той може да бъде импортиран на всеки друг компютър в мрежата с помощта на графичната конзола, SchTasks.exe или PowerShell.

Cmdlet ще ви помогне да импортирате параметрите на задачата и да я регистрирате. Регистрирайте-планирана задача.

Регистрация-ScheduledTask -Xml (Get-Content “\\ Server1 \ public \ NewPsTask.xml” | out-string) -TaskName „NewPsTask“

В PowerShell 2.0 (Windows 7 / Server 2008 R2) импортирането на работа също е по-лесно с помощната програма на schtasks. Първият екип ще създаде нова задача. Вторият веднага ще го стартира (без да изчаква спусъка да заработи).

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

забележка. Моля, обърнете внимание, че този пример показва информацията за акаунта, под която ще се стартира задачата. Ако информацията за акаунта не е посочена, тогава защото те не се съхраняват в задачата; ще бъдат поискани при импортиране.