about_Scheduled_Jobs
Краткое описание
Описывает запланированные задания и объясняет, как использовать запланированные задания и управлять ими в PowerShell и в планировщике задач.
Подробное описание
Запланированные задания PowerShell — это полезный гибрид фоновых заданий PowerShell и задач планировщика задач.
Как и фоновые задания PowerShell, запланированные задания выполняются асинхронно в фоновом режиме. Экземпляры запланированных заданий, которые выполняются, можно управлять с помощью командлетов заданий, таких как Start-Job
, Get-Job
и Stop-Job
Receive-Job
.
Как и задачи планировщика задач, запланированные задания сохраняются на диске. Вы можете просматривать задания и управлять ими в планировщике задач, включать и отключать их по мере необходимости, запускать их или использовать в качестве шаблонов, устанавливать однократные или повторяющиеся расписания для запуска заданий или задавать условия запуска заданий.
Кроме того, результаты запланированных экземпляров заданий сохраняются на диске в легкодоступном формате, предоставляя журнал выходных данных задания. Запланированные задания предоставляют настраиваемый набор командлетов для управления ими. Командлеты позволяют создавать, изменять, управлять, отключать и повторно включать запланированные задания, триггеры заданий и параметры задания.
Этот комплексный и гибкий набор средств делает запланированные задания важным компонентом многих профессиональных ИТ-решений PowerShell.
Командлеты запланированных заданий включены в модуль PSScheduledJob , установленный с помощью PowerShell. Этот модуль появился в PowerShell 3.0 и работает в PowerShell 3.0 и более поздних версиях PowerShell. Дополнительные сведения о командлетах, содержащихся в модуле PSScheduledJob , см. в разделе PSScheduledJob.
Дополнительные сведения о фоновых заданиях PowerShell см. в about_Jobs.
Дополнительные сведения о планировщике задач см. в разделе "Планировщик задач".
Примечание.
Вы можете просматривать запланированные задания PowerShell и управлять ими в планировщике задач. Задания PowerShell и командлеты запланированных заданий работают только над запланированными заданиями, созданными в PowerShell.
Быстрое начало работы
В этом примере создается запланированное задание, которое запускается каждый день в 3:00 и запускает Get-Process
командлет. Задание запускается, даже если компьютер работает на батареях.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
Командлет Get-ScheduledJob
получает запланированные задания на локальном компьютере.
Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Get-JobTrigger
возвращает триггеры задания ProcessJob. Входные параметры указывают запланированное задание, а не триггер, так как триггеры сохраняются в запланированном задании.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
В этом примере используется параметр ContinueIfGoingOnBattery командлета Set-ScheduledJob
для изменения свойства StopIfGoingOnBatteries processJob на False.
Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -PassThru
StartIfOnBatteries : True
StopIfGoingOnBatteries : False
WakeToRun : True
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
Командлет Get-ScheduledJob
получает запланированное задание ProcessJob .
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Командлет Get-Job
получает все экземпляры запланированного задания ProcessJob , выполняющегося до сих пор. Командлет Get-Job
получает запланированные задания, только если модуль PSScheduledJob импортируется в текущий сеанс.
Совет
Обратите внимание, что для управления запланированными заданиями используются командлеты запланированных заданий, но используются командлеты заданий для управления экземплярами запланированных заданий.
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
Командлет Receive-Job
получает результаты последнего экземпляра запланированного задания ProcessJob (идентификатор = 51).
Receive-Job -ID 51
Несмотря на то, что Receive-Job
команда не включала параметр Keep , результаты задания сохраняются на диске, пока не удалите их или максимальное количество результатов будет превышено.
Результаты задания больше не доступны в этом сеансе, но при запуске нового сеанса или открытии нового окна PowerShell результаты задания будут доступны снова.
Следующая команда использует параметр DefinitionName командлета Start-Job
для запуска запланированного задания ProcessJob .
Задания, запущенные с помощью командлета Start-Job
, являются стандартными фоновыми заданиями PowerShell, а не экземплярами запланированного задания. Как и все фоновые задания, эти задания запускаются немедленно, они не подвергаются параметрам задания или влияют на триггеры задания, и их выходные данные не сохраняются в выходном каталоге запланированного каталога заданий.
Start-Job -DefinitionName ProcessJob
Командлет Unregister-ScheduledJob
удаляет запланированное задание ProcessJob и все сохраненные результаты экземпляров заданий.
Unregister-ScheduledJob ProcessJob
Основные понятия запланированных заданий
Запланированное задание выполняет команды или скрипт. Запланированное задание может включать триггеры заданий, которые запускают задание и параметры задания, которые задают условия для выполнения задания.
Триггер задания запускает запланированное задание автоматически. Триггер задания может включать однократное или повторяющееся расписание или указывать событие, например, когда пользователь входит в систему или запускает Windows. Запланированное задание может иметь один или несколько триггеров задания, и вы можете создавать, добавлять, включать, отключать и получать триггеры заданий.
Триггеры задания не являются обязательными. Вы можете сразу же начать запланированные задания с помощью Start-Job cmdlet
параметра RunNow или добавить параметр RunNow в команду Register-ScheduledJob
.
Параметры задания задают условия для выполнения запланированного задания. Каждое запланированное задание имеет один объект параметров задания. Можно создавать и изменять объекты параметров задания и добавлять их в одно или несколько запланированных заданий.
Каждый раз при запуске запланированного задания создается экземпляр задания. Используйте командлеты заданий PowerShell для просмотра экземпляра задания и управления им.
Запланированные задания сохраняются на диске и используют команду командлета, Register
а не New
. XML-файлы находятся на локальном компьютере в каталоге $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
.
PowerShell создает каталог для каждого запланированного задания и сохраняет команды задания, триггеры заданий, параметры задания и результаты задания в каталоге запланированных заданий. Триггеры задания и параметры задания не сохраняются на диске независимо. Они сохраняются в XML запланированного задания каждого запланированного задания, с которым они связаны.
Запланированные задания, триггеры заданий и параметры задания отображаются в PowerShell как объекты. Объекты связаны между собой, что упрощает их обнаружение и использование в командах и сценариях.
Запланированные задания отображаются как объекты ScheduledJobDefinition . Объект ScheduledJobDefinition имеет свойство JobTriggers , содержащее триггеры задания запланированного задания и свойство Options , содержащее параметры задания. Объекты ScheduledJobTriggers и ScheduledJobOptions , представляющие триггеры заданий и параметры задания соответственно, имеют свойство JobDefinition , содержащее запланированное задание, с которым они связаны. Это рекурсивное взаимодействие упрощает поиск триггеров и параметров запланированного задания и поиска, скрипта и отображения запланированного задания, к которому связан любой триггер задания или параметр задания.
См. также
PowerShell