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-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 отображает свойства 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.

См. также