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.
Использование командлета позволяет администраторам создавать единообразные, документируемые и воспроизводимые конфигурации задач, что снижает вероятность ошибок, связанных с ручным вводом параметров в графическом интерфейсе.
Источники
- Microsoft Docs: "New-ScheduledTaskTrigger" — официальная документация командлета (Windows PowerShell).
- Microsoft Learn: "ScheduledTasks Module" — описание модуля и его командлетов.
- Windows Task Scheduler Reference — техническая документация по планировщику задач Windows.
- PowerShell Team Blog — публикации о работе с запланированными задачами в PowerShell.
- TechNet Script Center — примеры скриптов для автоматизации задач администрирования Windows.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →