Поделиться через


О запланированных заданиях

Краткое описание

Описывает запланированные задания и объясняет, как использовать запланированные задания и управлять ими в 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 AM и запускается 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Возвращает триггеры задания процессжоб. Входные параметры задают запланированное задание, а не триггер, так как триггеры сохраняются в запланированном задании.

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

В этом примере используется параметр континуеифгоингонбаттери Set-ScheduledJob командлета, чтобы изменить свойство Стопифгоингонбаттериес объекта процессжоб на 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Командлет возвращает запланированное задание процессжоб .

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

Get-JobКомандлет возвращает все экземпляры запланированного задания процессжоб , которые были запущены на данный момент. 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Командлет возвращает результаты последнего экземпляра запланированного задания ПРОЦЕССЖОБ (ИД = 51).

Receive-Job -ID 51

Несмотря на то Receive-Job , что команда не включала параметр сохранения , результаты задания сохраняются на диске, пока вы не удалите их или не превышено максимальное число результатов.

Результаты задания больше не доступны в этом сеансе, но если вы запускаете новый сеанс или открываете новое окно PowerShell, результаты задания снова становятся доступными.

Следующая команда использует параметр DefinitionName Start-Job командлета для запуска запланированного задания процессжоб .

Задания, запускаемые с помощью Start-Job командлета, являются стандартными фоновыми заданиями PowerShell, а не экземплярами запланированного задания. Как и все фоновые задания, эти задания запускаются немедленно, они не подчиняются параметрам задания или не зависят от триггеров заданий, а их выходные данные не сохраняются в выходном каталоге каталога запланированных заданий.

Start-Job -DefinitionName ProcessJob

Unregister-ScheduledJobКомандлет удаляет запланированное задание процессжоб и все сохраненные результаты его экземпляров.

Unregister-ScheduledJob ProcessJob

Основные понятия запланированных заданий

Запланированное задание запускает команды или скрипт. Запланированное задание может включать триггеры заданий, запускающие задания и параметры задания, которые задают условия для выполнения задания.

Триггер задания автоматически запускает запланированное задание. Триггер задания может включать разовое или повторяющееся расписание или указывать событие, например, когда пользователь входит в систему или запускается Windows. Запланированное задание может иметь один или несколько триггеров заданий, а также создавать, добавлять, включать, отключать и получать Триггеры заданий.

Триггеры задания не являются обязательными. Запланированные задания можно запускать немедленно с помощью Start-Job cmdlet или путем добавления параметра RunNow в Register-ScheduledJob команду.

Параметры задания задают условия для выполнения запланированного задания. У каждого запланированного задания есть один объект параметров задания. Вы можете создавать и изменять объекты параметров задания, а также добавлять их в одно или несколько запланированных заданий.

При каждом запуске запланированного задания создается экземпляр задания. Используйте командлеты задания PowerShell для просмотра экземпляра задания и управления им.

Запланированные задания сохраняются на диске и используют команду командлета, Register вместо New . XML-файлы находятся на локальном компьютере в каталоге $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs .

PowerShell создает каталог для каждого запланированного задания и сохраняет команды задания, триггеры заданий, параметры задания и результаты задания в каталоге запланированных заданий. Триггеры задания и параметры задания не сохраняются на диск независимо друг от друга. Они сохраняются в XML-коде запланированного задания для каждого запланированного задания, с которым они связаны.

Запланированные задания, триггеры заданий и параметры задания отображаются в PowerShell как объекты. Объекты взаимосвязаны, что упрощает их обнаружение и использование в командах и скриптах.

Запланированные задания отображаются как объекты ScheduledJobDefinition . Объект ScheduledJobDefinition имеет свойство жобтригжерс , которое содержит триггеры заданий запланированного задания и свойство Options , которое содержит параметры задания. Объекты счедуледжобтригжерс и счедуледжобоптионс , которые представляют триггеры задания и параметры задания соответственно, имеют свойство JobDefinition , содержащее запланированное задание, с которым они связаны. Это рекурсивное межсоединение позволяет легко найти триггеры и параметры запланированного задания, а также найти, создать скрипт и отобразить запланированное задание, связанное с любым триггером задания или параметром задания.

См. также

about_Scheduled_Jobs_Basics

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

Командлеты модуля PSScheduledJob

Планировщик заданий