about_Scheduled_Jobs

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

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

Подробное описание

Запланированные задания PowerShell — это полезный гибрид фоновых заданий PowerShell и задач планировщика задач.

Как и фоновые задания PowerShell, запланированные задания выполняются асинхронно в фоновом режиме. Экземпляры запланированных заданий, которые выполняются, можно управлять с помощью командлетов заданий, таких как Start-Job, Get-Jobи Stop-JobReceive-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 , содержащее запланированное задание, с которым они связаны. Это рекурсивное взаимодействие упрощает поиск триггеров и параметров запланированного задания и поиска, скрипта и отображения запланированного задания, к которому связан любой триггер задания или параметр задания.

См. также