about_Scheduled_Jobs_Basics
Краткое описание
Описание процедур создания запланированных заданий и управления ими.
Подробное описание
В этом документе показано, как выполнять основные задачи по созданию запланированных заданий и управлению ими. Дополнительные сведения о более сложных задачах см. в about_Scheduled_Jobs_Advanced.
Дополнительные сведения о командлетах, содержащихся в модуле PSScheduledJob , см. в разделе PSScheduledJob.
Создание запланированного задания
Чтобы создать запланированное задание, используйте Register-ScheduledJob
командлет. Командлету требуется имя и команды или скрипты, которые выполняется задание. Можно либо сразу запустить задание, добавив параметр RunNow , либо создав триггер задания и установив параметры задания при создании задания или измените существующее задание.
Чтобы создать задание, выполняющее скрипт, используйте параметр FilePath , чтобы указать путь к файлу скрипта. Чтобы создать задание, выполняющее команды, используйте параметр ScriptBlock .
Командлет Register-ScheduledJob
создает ProcessJob, который выполняет Get-Process
команду. Это запланированное задание имеет параметры задания по умолчанию и не активируются задания.
Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
Создание триггера задания
Триггеры заданий автоматически запускают запланированное задание. Триггер задания может быть однократным или повторяющимся расписанием или событием, например при запуске входа пользователя в систему или Windows. Каждое задание может иметь ноль, один или несколько триггеров заданий.
Чтобы создать триггер задания, используйте New-JobTrigger
командлет. Следующая команда создает триггер задания, который запускает задание каждый понедельник и четверг в 5:00.
Команда сохраняет триггер задания в переменной $T
.
$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
Триггеры задания не являются обязательными. Запланированное задание можно запустить в любое время, добавив параметр RunNow в Register-ScheduledJob
команду или с помощью Start-Job
командлетов.
Добавление триггера задания
При добавлении триггера задания в запланированное задание триггер задания добавляется в XML-файл запланированного задания и становится частью запланированного задания.
Триггер задания можно добавить в запланированное задание при создании запланированного задания или изменить существующее задание. Триггер задания можно изменить в любое время.
PowerShell использует некоторые триггеры одного задания, которые использует планировщик задач. Подробные сведения об триггерах заданий см. в разделе справки для командлета New-JobTrigger .
В следующем примере используется splatting для создания $JobParms
значений параметров, передаваемых командлету Register-ScheduledJob
. Дополнительные сведения см. в разделе about_Splatting.md.
Используется Register-ScheduledJob
@JobParms
для создания запланированного задания. Он использует параметр Trigger для указания триггера задания в переменной $T
.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Command}
Trigger = $T
}
Register-ScheduledJob @JobParms
Вы также можете добавить триггер задания в существующее запланированное задание в любое время. Командлет Add-JobTrigger
добавляет триггер задания в $T
переменную в запланированное задание ProcessJob .
Add-JobTrigger -Name ProcessJob -Trigger $T
В результате триггер задания автоматически запускает processJob каждую понедельник и четверг в 5:00.
Получение триггера задания
Чтобы получить триггер задания запланированного задания, используйте Get-JobTrigger
командлет. Используйте параметры Name, ID и InputObject, чтобы указать запланированное задание, а не триггер задания.
Get-JobTrigger
возвращает триггер задания объекта ProcessJob.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
Создание параметров задания
Параметры задания устанавливают условия запуска и запуска задания. Каждое задание имеет параметры задания по умолчанию, если вы не измените их. Так как параметры задания могут препятствовать выполнению задания в запланированное время, важно понимать параметры задания и тщательно использовать их.
PowerShell использует те же параметры задания, что и планировщик задач. Подробные сведения о параметрах задания см. в разделе справки для New-ScheduledJobOption.
Параметры задания хранятся в XML-файле запланированного задания. При создании запланированного задания можно задать параметры задания или изменить их в любое время.
Командлет New-ScheduledJobOption
создает параметр запланированного задания, в котором параметр запланированного задания WakeToRun имеет значение True. Параметр WakeToRun запускает запланированное задание, даже если компьютер находится в состоянии спящего или Гибернатного состояния во время запланированного запуска. Команда сохраняет параметры задания в переменной $O
.
$O = New-ScheduledJobOption -WakeToRun
Как получить параметры задания
Чтобы получить параметры задания запланированного задания, используйте Get-ScheduledJobOption
командлет. Используйте параметры Name, ID и InputObject, чтобы указать запланированное задание, а не параметры задания.
Get-ScheduledJobOption
возвращает параметры задания объекта ProcessJob.
Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries : False
StopIfGoingOnBatteries : True
WakeToRun : False
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
Изменение параметров задания
Можно изменить параметры задания запланированного задания при создании запланированного задания или изменении существующего задания.
Знаки $JobParms
передаются Add-JobTrigger
командлету для создания задания процесса. Он использует параметр ScheduledJobOption для указания параметров задания в переменной $O
.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
ScheduledJobOption = $O
}
Add-JobTrigger @JobParms
Вы также можете изменить параметры задания на существующее запланированное задание в любое время.
Следующая команда использует Set-ScheduledJobOption
командлет для изменения значения параметра WakeToRun запланированного задания ProcessJob на True.
Командлеты Set
в модуле PSScheduledJob , например Set-ScheduledJobOption
командлет, не имеют параметров имени или идентификатора . Параметр InputObject можно использовать для указания параметров запланированного задания или передачи запланированного задания из Get-ScheduledJobOption
командлета Set-ScheduledJobOption
в .
В этом примере командлет используется Get-ScheduledJob
для получения объекта ProcessJob. Он использует Get-ScheduledJobOption
командлет для получения параметров задания в ProcessJob и командлета Set-ScheduledJobOption
для изменения параметра задания WakeToRun в ProcessJob на True.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
Set-ScheduledJobOption -WakeToRun
Получение экземпляров запланированных заданий
При запуске запланированного задания PowerShell создает экземпляр задания, аналогичный стандартному фоновому заданию PowerShell. Можно использовать командлеты заданий, такие как Get-Job
Stop-Job
и Receive-Job
управлять экземплярами заданий.
Примечание.
Чтобы использовать командлеты заданий в экземплярах запланированных заданий, модуль PSScheduledJob должен быть импортирован в сеанс. Чтобы импортировать модуль PSScheduledJob , введите Import-Module PSScheduledJob
или используйте любой командлет запланированного задания, например Get-ScheduledJob
.
Чтобы получить все экземпляры запланированных заданий PowerShell и все активные стандартные задания, используйте Get-Job
командлет. Командлет Import-Module
импортирует модуль PSScheduledJob и Get-Job
получает задания на локальном компьютере.
Import-Module PSScheduledJob
Get-Job
Get-Job
возвращает экземпляры ProcessJob на локальном компьютере.
Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
Отображение по умолчанию не показывает время начала, которое обычно различает экземпляры одного запланированного задания.
Командлет Get-Job
отправляет объекты вниз конвейера. Командлет Format-Table
отображает свойства Name, ID и BeginTime запланированного задания.
Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name Id BeginTime
---- -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM
Получение результатов запланированного задания
Чтобы получить результаты экземпляра запланированного задания, используйте Receive-Job
командлет.
Примечание.
Чтобы использовать командлеты задания для экземпляров запланированных заданий, модуль PSScheduledJob должен быть импортирован в сеанс. Чтобы импортировать модуль PSScheduledJob , введите Import-Module PSScheduledJob
или используйте любой командлет запланированного задания, например Get-ScheduledJob
.
В этом примере результаты нового экземпляра запланированного задания ProcessJob (ID = 51).
Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep
Результаты запланированных заданий сохраняются на диске, поэтому параметр Receive-Job
Keep не требуется. Однако без параметра Keep можно получить результаты запланированного задания только один раз в каждом сеансе PowerShell. Чтобы запустить новый сеанс PowerShell, введите PowerShell
или откройте новое окно PowerShell.
См. также
PowerShell