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

Командлет New-ScheduledTaskTrigger

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

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

Командлет имеет несколько наборов параметров, определяющих тип создаваемого триггера. Основные синтаксические конструкции:

``powershell New-ScheduledTaskTrigger [-Daily] -At <DateTime> [-DaysInterval <Int32>] [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-Weekly] -At <DateTime> -DaysOfWeek <DayOfWeek[]> [-WeeksInterval <Int32>] [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-Monthly] -At <DateTime> -DaysOfMonth <Int32[]> [-MonthsOfYear <Int32[]>] [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-Once] -At <DateTime> [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-AtStartup] [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-AtLogOn] [-User <String>] [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-OnIdle] [-RandomDelay <TimeSpan>] [<CommonParameters>] New-ScheduledTaskTrigger [-AtSystemStart] [-RandomDelay <TimeSpan>] [<CommonParameters>] ``

Ключевые параметры

  • -Daily — создаёт триггер, срабатывающий ежедневно в указанное время.
  • -Weekly — создаёт триггер, срабатывающий еженедельно в указанные дни недели и время.
  • -Monthly — создаёт триггер, срабатывающий ежемесячно в указанные дни месяца и время.
  • -Once — создаёт триггер, срабатывающий однократно в указанное время.
  • -AtStartup — создаёт триггер, срабатывающий при запуске операционной системы.
  • -AtLogOn — создаёт триггер, срабатывающий при входе пользователя в систему.
  • -OnIdle — создаёт триггер, срабатывающий при переходе системы в состояние простоя.
  • -AtSystemStart — создаёт триггер, срабатывающий при запуске системы (аналогичен -AtStartup, но доступен в некоторых версиях).
  • -At — задаёт время срабатывания триггера (требуется для Daily, Weekly, Monthly, Once).
  • -DaysInterval — для Daily-триггера задаёт интервал в днях (например, 2 — каждый второй день).
  • -DaysOfWeek — для Weekly-триггера задаёт дни недели (например, Monday, Wednesday, Friday).
  • -WeeksInterval — для Weekly-триггера задаёт интервал в неделях (например, 2 — каждую вторую неделю).
  • -DaysOfMonth — для Monthly-триггера задаёт дни месяца (от 1 до 31).
  • -MonthsOfYear — для Monthly-триггера задаёт месяцы (например, January, March).
  • -RandomDelay — задаёт случайную задержку срабатывания триггера (в формате TimeSpan, например, 00:30:00 — до 30 минут).
  • -User — для AtLogOn-триггера задаёт конкретного пользователя, при входе которого срабатывает триггер.

Типы создаваемых триггеров

Командлет возвращает объект типа Microsoft.Management.Infrastructure.CimInstance, представляющий экземпляр класса MSFT_TaskTrigger (из пространства имён Root/Microsoft/Windows/TaskScheduler). Этот объект содержит свойства, описывающие триггер:

СвойствоОписание
IdУникальный идентификатор триггера в рамках задачи
EnabledЛогическое значение, указывающее, включён ли триггер
RepetitionОбъект, задающий параметры повторения (интервал, длительность, остановка)
StartBoundaryДата и время первого срабатывания
EndBoundaryДата и время последнего срабатывания
ExecutionTimeLimitМаксимальное время выполнения задачи
RandomDelayСлучайная задержка срабатывания
DelayЗадержка перед срабатыванием (для триггеров AtStartup, AtLogOn, OnIdle)

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

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

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

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

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

``powershell $trigger = New-ScheduledTaskTrigger -Weekly -At "10:30" -DaysOfWeek Monday, Wednesday, Friday -WeeksInterval 1 ``

Создаёт триггер, срабатывающий каждый понедельник, среду и пятницу в 10:30.

Создание однократного триггера

``powershell $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddDays(1) ``

Создаёт триггер, срабатывающий один раз через сутки от текущего момента.

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

``powershell $trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay 00:05:00 ``

Создаёт триггер, срабатывающий при запуске системы со случайной задержкой до 5 минут.

Создание триггера при входе пользователя

``powershell $trigger = New-ScheduledTaskTrigger -AtLogOn -User "DOMAIN\UserName" ``

Создаёт триггер, срабатывающий при входе указанного пользователя.

Применение в задачах

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

  1. Создание триггера: $trigger = New-ScheduledTaskTrigger ...
  2. Создание действия (например, запуск программы): $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\script.ps1"
  3. Создание задачи: Register-ScheduledTask -TaskName "MyTask" -Trigger $trigger -Action $action -User "SYSTEM" -RunLevel Highest

Также триггеры можно добавлять к существующим задачам с помощью командлета Set-ScheduledTask.

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

  • Командлет не создаёт триггеры с условиями, основанными на событиях (например, появление файла в папке). Для таких триггеров используется командлет New-ScheduledTaskTrigger с параметром -AtTaskCreation или создание триггера через XML-определение.
  • Параметр -RandomDelay применяется только к триггерам, поддерживающим задержку (Daily, Weekly, Monthly, Once, AtStartup, AtLogOn, OnIdle).
  • Время задаётся в 24-часовом формате, но может быть указано с учётом часового пояса системы.
  • При создании триггера с параметром -Monthly дни месяца задаются как числа; если указать 31, триггер не сработает в месяцах, где нет 31-го дня.

История версий

Командлет появился в Windows PowerShell 4.0 (Windows 8.1 / Windows Server 2012 R2) вместе с модулем ScheduledTasks. В более ранних версиях Windows (Windows 7, Windows Server 2008 R2) модуль не входил в стандартную поставку, но мог быть установлен отдельно через Windows Management Framework. В Windows PowerShell 5.0 и выше (Windows 10, Windows Server 2016) командлет доступен по умолчанию.

Связанные командлеты

  • Get-ScheduledTask — получение списка задач.
  • Set-ScheduledTask — изменение существующей задачи.
  • Register-ScheduledTask — создание новой задачи.
  • Unregister-ScheduledTaskудаление задачи.
  • New-ScheduledTaskAction — создание действия задачи.
  • New-ScheduledTaskPrincipal — создание учётной записи для задачи.
  • New-ScheduledTaskSettingsSet — создание набора параметров задачи.

Источники

  • Microsoft Docs: «New-ScheduledTaskTrigger» (ScheduledTasks module)
  • Документация Windows PowerShell по модулю ScheduledTasks (версии 4.0–5.1)
  • Справочник по планировщику задач Windows (Task Scheduler)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →