Открыть сервисСервис

New-ScheduledTaskTrigger

New-ScheduledTaskTrigger — это командлет (cmdlet) в среде Windows PowerShell, предназначенный для создания объекта-триггера, который определяет условия и время запуска запланированной задачи в планировщике задач Windows (Task Scheduler). Командлет входит в модуль ScheduledTasks, доступный в операционных системах Windows, начиная с Windows 8 и Windows Server 2012, а также в более поздних версиях. New-ScheduledTaskTrigger позволяет программно задавать различные типы расписаний, такие как однократный запуск, ежедневное, еженедельное, ежемесячное выполнение, запуск при загрузке системы, при входе пользователя, при простое или при возникновении определённого события в журнале Windows.

Назначение и контекст использования

Командлет New-ScheduledTaskTrigger является частью инфраструктуры управления задачами Windows через PowerShell. Он используется в сочетании с другими командлетами модуля ScheduledTasks, такими как Register-ScheduledTask, Set-ScheduledTask и New-ScheduledTaskAction, для создания полностью настраиваемых запланированных задач без использования графического интерфейса планировщика задач. Основное назначение командлета — генерация объекта CimInstance типа MSFT_TaskTrigger, который затем передаётся в качестве параметра -Trigger при регистрации или изменении задачи.

Применение New-ScheduledTaskTrigger особенно актуально в сценариях автоматизации администрирования, развёртывания конфигураций на множестве компьютеров, создания задач обслуживания системы или выполнения скриптов по расписанию. Командлет позволяет точно задавать временные параметры, включая дату начала, продолжительность выполнения, интервалы повторения и ограничения по дням недели.

Синтаксис и параметры

Командлет имеет несколько наборов параметров (parameter sets), каждый из которых соответствует определённому типу триггера. Основные наборы параметров включают:

  • Daily — для создания ежедневного триггера. Используются параметры -Daily и -At (время запуска). Дополнительно может быть указан параметр -DaysInterval (интервал в днях, по умолчанию 1).
  • Weekly — для еженедельного триггера. Параметры: -Weekly, -At, -DaysOfWeek (дни недели), -WeeksInterval (интервал в неделях, по умолчанию 1).
  • Monthly — для ежемесячного триггера по дням месяца. Параметры: -Monthly, -At, -DaysOfMonth (числа месяца), -MonthsOfYear (месяцы года).
  • MonthlyDayOfWeek — для ежемесячного триггера по дням недели (например, каждый второй вторник месяца). Параметры: -Monthly, -At, -DaysOfWeek, -WeeksOfMonth (недели месяца), -MonthsOfYear.
  • Once — для однократного триггера. Параметры: -Once и -At (дата и время).
  • AtStartup — для запуска при загрузке системы. Параметр: -AtStartup.
  • AtLogOn — для запуска при входе пользователя. Параметр: -AtLogOn.
  • Idle — для запуска при простое системы. Параметр: -Idle.
  • Registration — для запуска при регистрации задачи. Параметр: -Registration.
  • Event — для запуска при наступлении определённого события в журнале Windows. Параметры: -EventId, -EventSource, -EventLog, -EventTriggerEnabled.

Общие параметры (применимы ко всем типам триггеров):

  • -RandomDelay — задаёт случайную задержку (в формате TimeSpan) до запуска задачи после срабатывания триггера. Позволяет распределить нагрузку на систему.
  • -RepetitionInterval — интервал повторения задачи после первого запуска (например, каждые 30 минут).
  • -RepetitionDuration — длительность, в течение которой будет действовать повторение (например, 1 час).
  • -StartBoundary — дата и время первого запуска триггера (используется в некоторых наборах).
  • -EndBoundary — дата и время окончания действия триггера.
  • -Enabled — логический параметр, указывающий, включён ли триггер (по умолчанию $true).

Типы триггеров

New-ScheduledTaskTrigger поддерживает все основные типы триггеров, определённые в планировщике задач Windows. Ниже приведена классификация с кратким описанием.

Тип триггераПараметр командлетаОписание
Однократный-OnceЗадача выполняется один раз в указанное время.
Ежедневный-DailyЗадача выполняется ежедневно или с заданным интервалом в днях.
Еженедельный-WeeklyЗадача выполняется в определённые дни недели с заданным интервалом в неделях.
Ежемесячный по дням-MonthlyЗадача выполняется в определённые числа месяца (например, 1, 15) в указанные месяцы.
Ежемесячный по дням недели-MonthlyDayOfWeekЗадача выполняется в определённые дни недели на заданных неделях месяца (например, первый понедельник каждого месяца).
При загрузке-AtStartupЗадача запускается при старте операционной системы.
При входе-AtLogOnЗадача запускается при входе любого или указанного пользователя.
При простое-IdleЗадача запускается, когда система находится в состоянии простоя (определяется планировщиком).
При регистрации-RegistrationЗадача запускается сразу после её создания или изменения.
По событию-EventЗадача запускается при записи определённого события в журнал Windows (системный, приложений, безопасности и т.д.).

Примеры использования

Создание ежедневного триггера

``powershell $Trigger = New-ScheduledTaskTrigger -Daily -At "09:00" ``

Данный пример создаёт триггер, который будет срабатывать ежедневно в 9:00.

Создание еженедельного триггера с повторением

``powershell $Trigger = New-ScheduledTaskTrigger -Weekly -At "10:30" -DaysOfWeek Monday, Wednesday, Friday -WeeksInterval 2 -RepetitionInterval (New-TimeSpan -Minutes 15) -RepetitionDuration (New-TimeSpan -Hours 2) ``

Этот триггер срабатывает каждый второй понедельник, среду и пятницу в 10:30, после чего задача повторяется каждые 15 минут в течение 2 часов.

Создание триггера при загрузке системы

``powershell $Trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay (New-TimeSpan -Minutes 5) ``

Триггер запускает задачу при загрузке системы со случайной задержкой до 5 минут.

Создание триггера по событию

``powershell $Trigger = New-ScheduledTaskTrigger -EventTriggerEnabled -EventId 1000 -EventSource "MyApp" -EventLog "Application" ``

Триггер срабатывает при записи события с ID 1000 от источника "MyApp" в журнале приложений.

Взаимодействие с другими командлетами

New-ScheduledTaskTrigger обычно используется в конвейере с командлетами, создающими или изменяющими задачу. Типичный сценарий:

``powershell $Action = New-ScheduledTaskAction -Execute "C:\Scripts\backup.ps1" $Trigger = New-ScheduledTaskTrigger -Daily -At "03:00" $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask -TaskName "DailyBackup" -Action $Action -Trigger $Trigger -Settings $Settings -User "SYSTEM" ``

В этом примере создаётся задача с именем "DailyBackup", которая запускает скрипт ежедневно в 3:00 от имени системы.

Ограничения и особенности

  • Командлет не поддерживает создание триггеров, основанных на событиях с фильтрацией по XPath (для этого требуется использование COM-объекта Schedule.Service).
  • Параметр -RandomDelay может быть указан только для триггеров типов -Once, -Daily, -Weekly, -Monthly, -MonthlyDayOfWeek, -AtStartup, -AtLogOn и -Registration.
  • Для триггеров типа -Idle и -Event параметры -RepetitionInterval и -RepetitionDuration не применяются.
  • При использовании триггера -AtLogOn без указания пользователя задача будет запускаться при входе любого пользователя.
  • В Windows 7 и Windows Server 2008 R2 модуль ScheduledTasks отсутствует; для управления задачами в этих версиях используются другие методы (например, schtasks.exe или COM-объекты).

Применение в автоматизации

New-ScheduledTaskTrigger широко используется в сценариях автоматизации администрирования, таких как:

  • Регулярное резервное копирование данных и баз данных.
  • Запуск скриптов мониторинга и сбора метрик.
  • Обновление антивирусных баз и установка обновлений.
  • Очистка временных файлов и журналов событий.
  • Выполнение задач обслуживания Active Directory и Exchange Server.
  • Развёртывание конфигураций через Group Policy или Configuration Manager.

Использование командлета позволяет администраторам создавать единообразные, документируемые и воспроизводимые конфигурации задач, что снижает вероятность ошибок, связанных с ручным вводом параметров в графическом интерфейсе.

Источники

  1. Microsoft Docs: "New-ScheduledTaskTrigger" — официальная документация командлета (Windows PowerShell).
  2. Microsoft Learn: "ScheduledTasks Module" — описание модуля и его командлетов.
  3. Windows Task Scheduler Reference — техническая документация по планировщику задач Windows.
  4. PowerShell Team Blog — публикации о работе с запланированными задачами в PowerShell.
  5. TechNet Script Center — примеры скриптов для автоматизации задач администрирования Windows.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru