Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описание процедур создания запланированных заданий и управления ими.
Подробное описание
В этом документе показано, как выполнять основные задачи по созданию запланированных заданий и управлению ими. Дополнительные сведения о более сложных задачах см. в 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 командлет. Используйте имени, идентификатораи параметры 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 командлет. Используйте имени, идентификатори параметры 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-JobStop-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 отображает свойства имени, идентификатораи свойства 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
Результаты запланированных заданий сохраняются на диске, поэтому не требуется. Однако без параметра Keep можно получить результаты запланированного задания только один раз в каждом сеансе PowerShell. Чтобы запустить новый сеанс PowerShell, введите PowerShell или откройте новое окно PowerShell.
См. также
PowerShell