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

Командлет Register-ScheduledTask

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

История и контекст

Командлет Register-ScheduledTask появился в Windows PowerShell 3.0, выпущенном вместе с Windows Server 2012 и Windows 8. До этого управление запланированными задачами в Windows осуществлялось преимущественно через графический интерфейс планировщика задач (taskschd.msc), утилиту командной строки schtasks.exe или через COM-объекты (Task Scheduler API). Внедрение командлетов в модуле ScheduledTasks позволило автоматизировать создание и настройку задач в рамках сценариев PowerShell, что упростило администрирование серверов и рабочих станций.

Модуль ScheduledTasks является частью набора модулей для управления системой и доступен на всех поддерживаемых версиях Windows, начиная с Windows 8 и Windows Server 2012. Для работы с командлетом требуется запуск PowerShell от имени администратора, так как регистрация задачи в планировщике задач требует прав на запись в системное хранилище.

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

Командлет Register-ScheduledTask имеет несколько наборов параметров, но основная форма использования выглядит следующим образом:

`` Register-ScheduledTask [-TaskName] <String> [-TaskPath] <String> [-Action] <CimInstance[]> [[-Trigger] <CimInstance[]>] [[-Settings] <CimInstance>] [[-Principal] <CimInstance>] [[-Description] <String>] [-User] <String> [-Password] <String> [-RunLevel] <String> [-Force] [-WhatIf] [-Confirm] [<CommonParameters>] ``

Основные параметры:

  • -TaskName (обязательный) — имя регистрируемой задачи. Должно быть уникальным в пределах заданного пути. Если задача с таким именем уже существует, командлет выдаст ошибку (если не указан параметр -Force).
  • -TaskPath (необязательный) — путь к папке в планировщике задач, где будет размещена задача. По умолчанию — корневая папка (\). Путь указывается с обратными слешами, например \MyTasks\.
  • -Action (обязательный) — одно или несколько действий, которые будет выполнять задача. Представляет собой объект CimInstance, создаваемый командлетом New-ScheduledTaskAction. Обычно это запуск программы, отправка электронного письма или отображение сообщения.
  • -Trigger (необязательный) — триггеры, запускающие задачу. Создаётся командлетом New-ScheduledTaskTrigger. Может быть несколько триггеров (по времени, при входе в систему, при запуске системы, при событии и т.д.).
  • -Settings (необязательный) — объект настроек задачи, создаваемый командлетом New-ScheduledTaskSettingsSet. Позволяет задать параметры: возможность запуска при простое, остановка при превышении времени, перезапуск при сбое и т.д.
  • -Principal (необязательный) — учётная запись, от имени которой будет выполняться задача. Создаётся командлетом New-ScheduledTaskPrincipal. По умолчанию задача выполняется от имени текущего пользователя.
  • -Description — текстовое описание задачи.
  • -User и -Password — имя пользователя и пароль для выполнения задачи, если она должна запускаться от имени другого пользователя. Если не указаны, задача выполняется от имени текущего пользователя.
  • -RunLevel — уровень привилегий: Limited (без прав администратора) или HighestAvailable (с максимальными правами). По умолчанию — Limited.
  • -Force — принудительная регистрация задачи, даже если задача с таким именем уже существует (перезаписывает её).
  • -WhatIf и -Confirm — стандартные параметры PowerShell для отображения результата без выполнения и запроса подтверждения соответственно.

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

Простая регистрация задачи

Следующий пример создаёт задачу, которая запускает блокнот (notepad.exe) каждый день в 9:00:

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

Задача с настройками и учётной записью

Пример регистрации задачи с повышенными привилегиями и перезапуском при сбое:

``powershell $Action = New-ScheduledTaskAction -Execute "C:\Scripts\backup.ps1" $Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At "02:00" $Settings = New-ScheduledTaskSettingsSet -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 5) $Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest Register-ScheduledTask -TaskName "WeeklyBackup" -Action $Action -Trigger $Trigger -Settings $Settings -Principal $Principal ``

Регистрация задачи с несколькими действиями

Можно указать несколько действий, которые будут выполняться последовательно:

``powershell $Action1 = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo First > C:\log.txt" $Action2 = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo Second >> C:\log.txt" Register-ScheduledTask -TaskName "MultiActionTask" -Action $Action1, $Action2 -Trigger (New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1)) ``

Особенности работы

  • Командлет использует WMI-инфраструктуру (через CIM-сессии) для взаимодействия с планировщиком задач. Это означает, что он может работать как локально, так и удалённо (при указании параметра -CimSession).
  • При регистрации задачи без указания пользователя и пароля она выполняется от имени текущего пользователя. Если сеанс PowerShell завершён, задача может не запускаться, если не настроено сохранение учётных данных.
  • Для задач, требующих прав администратора, необходимо указывать -RunLevel HighestAvailable и соответствующую учётную запись.
  • Командлет не поддерживает регистрацию задач с триггерами на основе событий (Event Trigger) напрямую — для этого требуется создание XML-задания или использование COM-объектов. Однако триггеры событий могут быть заданы через объект CimInstance вручную.
  • В Windows 10 и Windows Server 2016 и новее командлет также поддерживает параметры для управления задачами в контейнерах и виртуальных средах.

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

Register-ScheduledTask является частью экосистемы командлетов модуля ScheduledTasks. Типичный рабочий процесс включает:

  1. New-ScheduledTaskAction — создание действия.
  2. New-ScheduledTaskTrigger — создание триггера.
  3. New-ScheduledTaskSettingsSet — настройка параметров задачи.
  4. New-ScheduledTaskPrincipal — задание учётной записи.
  5. Register-ScheduledTask — регистрация задачи.
  6. Get-ScheduledTask — получение информации о зарегистрированных задачах.
  7. Set-ScheduledTask — изменение существующей задачи.
  8. Unregister-ScheduledTaskудаление задачи.
  9. Start-ScheduledTask — принудительный запуск задачи.
  10. Stop-ScheduledTask — остановка выполняющейся задачи.

Ограничения и альтернативы

  • Командлет не может регистрировать задачи, требующие взаимодействия с рабочим столом (например, отображение сообщений) в сеансах без графического интерфейса.
  • Для сложных сценариев (например, создание задач с триггерами событий или настройка условий простоя) может потребоваться использование XML-шаблонов задачи и командлета Register-ScheduledTask с параметром -Xml.
  • Альтернативой является утилита schtasks.exe, которая поддерживает более широкий набор параметров, но менее удобна для интеграции в сценарии PowerShell.

Примеры в реальных сценариях

  • Автоматизация резервного копирования баз данных: регистрация задачи, запускающей скрипт SQL Server каждую ночь.
  • Обслуживание системы: создание задачи для очистки временных файлов раз в неделю.
  • Мониторинг: регистрация задачи, которая проверяет доступность сервера и отправляет уведомление при сбое.
  • Развёртывание ПО: при установке приложения может регистрироваться задача для его автоматического обновления.

Источники

  • Документация Microsoft PowerShell: «Register-ScheduledTask» (официальная справка командлета).
  • Microsoft Docs: «ScheduledTasks Module» (описание модуля и его командлетов).
  • Книга «Windows PowerShell 3.0 Step by Step» (издательство Microsoft Press, 2013).
  • Техническая документация Windows Task Scheduler API (MSDN).
  • Статья «Automating Task Scheduler with PowerShell» на портале TechNet (2014).

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

На главную BFOmetr →