Повечето потребители и администратори са свикнали да използват интерфейса на графичната конзола, за да създадат планирана задача на 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_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 |
$ спусък.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"
Импортирайте задача за планиране от 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"