Командлет 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 для создания и регистрации задач. Типичный сценарий:
- Создание триггера:
$trigger = New-ScheduledTaskTrigger ... - Создание действия (например, запуск программы):
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\script.ps1" - Создание задачи:
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 →