Командлет 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. Типичный рабочий процесс включает:
- New-ScheduledTaskAction — создание действия.
- New-ScheduledTaskTrigger — создание триггера.
- New-ScheduledTaskSettingsSet — настройка параметров задачи.
- New-ScheduledTaskPrincipal — задание учётной записи.
- Register-ScheduledTask — регистрация задачи.
- Get-ScheduledTask — получение информации о зарегистрированных задачах.
- Set-ScheduledTask — изменение существующей задачи.
- Unregister-ScheduledTask — удаление задачи.
- Start-ScheduledTask — принудительный запуск задачи.
- 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 →