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

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

New-ScheduledTaskAction — это командлет оболочки Windows PowerShell, предназначенный для создания объекта действия задачи планировщика Windows. Командлет возвращает объект, который определяет, какую программу или скрипт должна запускать задача при её активации. Полученный объект используется при создании или изменении задачи с помощью командлетов Register-ScheduledTask или Set-ScheduledTask.

Назначение и область применения

Командлет New-ScheduledTaskAction входит в модуль ScheduledTasks, который предоставляет интерфейс командной строки для управления планировщиком задач Windows. Он позволяет автоматизировать создание задач без использования графического интерфейса taskschd.msc. Основное назначение — задать исполняемый файл (скрипт, программу) и его аргументы, которые будут запущены по триггеру задачи. Объект действия может быть добавлен как к новой, так и к существующей задаче.

Синтаксис

Командлет имеет следующий синтаксис:

`` New-ScheduledTaskAction [-Execute] <String> [[-Argument] <String>] [[-WorkingDirectory] <String>] [[-Id] <String>] [<CommonParameters>] ``

Параметры

  • -Execute (обязательный) — путь к исполняемому файлу или скрипту. Может быть указан как абсолютный путь, так и имя файла, если он находится в системном каталоге или в переменной среды PATH. Примеры: "C:\Windows\System32\notepad.exe", "powershell.exe".
  • -Argument (необязательный) — строка аргументов командной строки, передаваемых исполняемому файлу. Аргументы могут содержать пробелы и кавычки, но требуют корректного экранирования. Пример: "-File C:\Scripts\backup.ps1".
  • -WorkingDirectory (необязательный) — рабочий каталог, в котором будет запущена программа. Если не указан, используется системный каталог или каталог, заданный по умолчанию для исполняемого файла. Пример: "C:\Scripts".
  • -Id (необязательный) — уникальный идентификатор действия в рамках задачи. Используется, если задача содержит несколько действий. Если не указан, генерируется автоматически.
  • CommonParameters — стандартные параметры PowerShell, такие как -Verbose, -Debug, -ErrorAction и другие.

Возвращаемое значение

Командлет возвращает объект типа Microsoft.Management.Infrastructure.CimInstance, представляющий класс MSFT_ScheduledTaskAction из WMI-пространства Root/Microsoft/Windows/TaskScheduler. Этот объект содержит свойства:

  • Id — идентификатор действия.
  • Execute — путь к исполняемому файлу.
  • Argument — аргументы командной строки.
  • WorkingDirectory — рабочий каталог.

Объект не выполняет никаких действий сам по себе — он лишь описывает, что должно произойти при срабатывании триггера. Для регистрации задачи используется командлет Register-ScheduledTask, который принимает объект действия как часть конфигурации задачи.

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

Создание простой задачи с запуском блокнота

``powershell $Action = New-ScheduledTaskAction -Execute "notepad.exe" $Trigger = New-ScheduledTaskTrigger -Daily -At "09:00" Register-ScheduledTask -TaskName "OpenNotepad" -Action $Action -Trigger $Trigger -User "SYSTEM" ``

Эта последовательность команд создаёт задачу, которая ежедневно в 9:00 запускает Блокнот от имени системы.

Запуск PowerShell-скрипта с аргументами

``powershell $Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\backup.ps1 -Mode Full" -WorkingDirectory "C:\Scripts" $Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At "02:00" Register-ScheduledTask -TaskName "WeeklyBackup" -Action $Action -Trigger $Trigger -User "DOMAIN\User" -Password "P@ssw0rd" ``

Здесь создаётся еженедельная задача, запускающая скрипт резервного копирования с политикой выполнения Bypass и аргументом -Mode Full.

Задача с несколькими действиями

``powershell $Action1 = New-ScheduledTaskAction -Execute "C:\App\app.exe" -Id "AppStart" $Action2 = New-ScheduledTaskAction -Execute "C:\App\logger.exe" -Id "LoggerStart" $Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) Register-ScheduledTask -TaskName "MultiActionTask" -Action $Action1, $Action2 -Trigger $Trigger ``

В этом примере задача запускает два исполняемых файла последовательно (порядок выполнения определяется планировщиком). Каждому действию присвоен уникальный идентификатор.

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

  • Командлет не проверяет существование указанного исполняемого файла или правильность аргументов. Ошибки возникнут только при попытке выполнения задачи.
  • Для задач, запускаемых от имени пользователя, может потребоваться указание учётных данных (параметры -User и -Password в Register-ScheduledTask). Если пароль не указан, задача может не запуститься при отсутствии сохранённых учётных данных.
  • Параметр -WorkingDirectory не влияет на работу, если исполняемый файл не использует относительные пути. Для скриптов PowerShell рекомендуется явно задавать пути внутри скрипта.
  • При указании аргументов с пробелами необходимо заключать их в кавычки и экранировать в соответствии с правилами PowerShell. Например, аргумент "C:\Program Files\MyApp\app.exe" должен быть передан как -Argument '"C:\Program Files\MyApp\app.exe"'.
  • Объект действия может быть переиспользован для нескольких задач, но изменение объекта не влияет на уже зарегистрированные задачи — требуется повторная регистрация с новым объектом.

Связь с другими командлетами

Командлет New-ScheduledTaskAction используется в паре с другими командлетами модуля ScheduledTasks:

  • New-ScheduledTaskTrigger — создаёт триггер (время, событие, состояние системы), который активирует задачу.
  • New-ScheduledTaskSettingsSet — задаёт дополнительные параметры задачи (например, поведение при простое, перезапуск при сбое).
  • New-ScheduledTaskPrincipal — определяет учётную запись, от которой выполняется задача.
  • Register-ScheduledTask — регистрирует задачу в планировщике, принимая объекты действия, триггера, настроек и учётной записи.
  • Set-ScheduledTask — изменяет существующую задачу, позволяя заменить действие, триггер или другие параметры.

Пример полной цепочки создания задачи:

``powershell $Action = New-ScheduledTaskAction -Execute "calc.exe" $Trigger = New-ScheduledTaskTrigger -Daily -At "10:00" $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount Register-ScheduledTask -TaskName "CalculatorDaily" -Action $Action -Trigger $Trigger -Settings $Settings -Principal $Principal ``

Источники

  • Документация Microsoft: «New-ScheduledTaskAction» (ScheduledTasks)
  • Справочник по модулю ScheduledTasks для Windows PowerShell
  • Официальное руководство по планировщику задач Windows (Task Scheduler)

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

На главную BFOmetr →