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

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

Set-ScheduledTask — это командлет оболочки Windows PowerShell, предназначенный для изменения параметров существующей запланированной задачи в операционной системе Windows. Он входит в состав модуля ScheduledTasks, который предоставляет интерфейс для управления планировщиком задач (Task Scheduler) через командную строку и сценарии.

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

Командлет Set-ScheduledTask используется для модификации свойств задачи, которая уже была создана с помощью командлета New-ScheduledTask или импортирована из XML-файла. Он позволяет изменять практически все аспекты задачи: триггеры запуска, действия, условия выполнения, параметры безопасности, настройки энергопотребления и другие. Основное преимущество использования Set-ScheduledTask перед ручным редактированием через графический интерфейс планировщика задач — возможность автоматизации массового изменения задач на множестве компьютеров или в рамках развёртывания конфигураций.

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

Базовый синтаксис командлета выглядит следующим образом:

`` Set-ScheduledTask [-TaskName] <String> [[-TaskPath] <String>] [-Action <CimInstance[]>] [-Trigger <CimInstance[]>] [-Settings <CimInstance>] [-Principal <CimInstance>] [-Description <String>] [-Password <SecureString>] [-User <String>] [-RunLevel <RunLevel>] [-Compatibility <Compatibility>] [-Force] [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [-AsJob] [<CommonParameters>] ``

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

  • -TaskName (обязательный) — имя изменяемой задачи. Если задача находится не в корневой папке планировщика, необходимо указать путь через параметр -TaskPath.
  • -TaskPath — путь к папке планировщика задач, где расположена задача (например, \Microsoft\Windows\). По умолчанию — корневая папка \.
  • -Actionмассив объектов CimInstance, представляющих действия задачи (запуск программы, отправка email, вывод сообщения). Обычно создаётся с помощью командлета New-ScheduledTaskAction.
  • -Trigger — массив объектов CimInstance для триггеров запуска (по времени, при событии, при входе в систему и т.д.). Создаётся с помощью New-ScheduledTaskTrigger.
  • -Settingsобъект CimInstance с дополнительными настройками задачи (например, разрешить запуск при питании от батареи, перезапускать при сбое, запускать пропущенные задачи). Создаётся с помощью New-ScheduledTaskSettingsSet.
  • -Principal — объект CimInstance, задающий учётную запись, от имени которой выполняется задача, и уровень привилегий. Создаётся с помощью New-ScheduledTaskPrincipal.
  • -Description — текстовое описание задачи.
  • -User — имя пользователя, от имени которого запускается задача (если требуется смена учётной записи).
  • -Passwordпароль пользователя в виде защищённой строки (SecureString).
  • -RunLevel — уровень привилегий: Limited (обычный) или HighestAvailable (наивысший доступный).
  • -Compatibility — уровень совместимости с версиями Windows (например, Vista, Win7, Win8).
  • -Force — подавляет запрос подтверждения.
  • -CimSession — позволяет изменять задачу на удалённом компьютере через сеанс CIM.

Использование

Изменение действий задачи

Для замены набора действий задачи используется параметр -Action. Например, чтобы изменить задачу «MyTask» на запуск программы notepad.exe:

``powershell $Action = New-ScheduledTaskAction -Execute "notepad.exe" Set-ScheduledTask -TaskName "MyTask" -Action $Action ``

Изменение триггеров

Аналогично заменяются триггеры. Например, установить ежедневный запуск в 9:00:

``powershell $Trigger = New-ScheduledTaskTrigger -Daily -At "09:00" Set-ScheduledTask -TaskName "MyTask" -Trigger $Trigger ``

Изменение настроек безопасности

Для смены учётной записи и пароля:

``powershell $Password = ConvertTo-SecureString "MyPassword" -AsPlainText -Force Set-ScheduledTask -TaskName "MyTask" -User "DOMAIN\User" -Password $Password -RunLevel HighestAvailable ``

Изменение дополнительных настроек

Например, разрешить запуск при питании от батареи и настроить перезапуск при сбое:

``powershell $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 5) Set-ScheduledTask -TaskName "MyTask" -Settings $Settings ``

Работа с удалёнными компьютерами

Для изменения задачи на удалённом компьютере используется сеанс CIM:

``powershell $Session = New-CimSession -ComputerName "RemotePC" Set-ScheduledTask -CimSession $Session -TaskName "MyTask" -Action $Action ``

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

  • Командлет не позволяет частично изменять отдельные свойства задачи — он полностью заменяет указанные параметры. Например, при передаче нового массива действий все предыдущие действия удаляются и заменяются новыми. Чтобы изменить только одно действие, необходимо сначала получить текущую задачу, модифицировать её свойство, а затем передать изменённый массив.
  • Для получения текущей конфигурации задачи используется командлет Get-ScheduledTask, возвращающий объект, свойства которого (Action, Trigger, Settings) можно изменять и затем передавать в Set-ScheduledTask.
  • Пароль для учётной записи требуется только при первом создании задачи или при смене пользователя. При изменении других параметров пароль можно не указывать, если учётная запись не меняется.
  • Командлет требует прав администратора для изменения задач, созданных от имени других пользователей или с повышенными привилегиями.
  • В операционных системах Windows, где PowerShell не установлен по умолчанию (например, Windows 7 без обновлений), командлет может отсутствовать. В таких случаях необходимо установить Windows Management Framework.

Примеры практического применения

Массовое обновление задач на нескольких серверах

Сценарий PowerShell для изменения триггера задачи «DailyBackup» на всех серверах, перечисленных в текстовом файле:

``powershell $Servers = Get-Content -Path "C:\servers.txt" $NewTrigger = New-ScheduledTaskTrigger -Daily -At "02:00" foreach ($Server in $Servers) { $Session = New-CimSession -ComputerName $Server Set-ScheduledTask -CimSession $Session -TaskName "DailyBackup" -Trigger $NewTrigger Remove-CimSession $Session } ``

Изменение учётной записи задачи

Для переноса задачи на выполнение от имени сервисной учётной записи:

``powershell $Task = Get-ScheduledTask -TaskName "LegacyTask" $Principal = New-ScheduledTaskPrincipal -UserId "SERVICE\svc_backup" -LogonType Password -RunLevel HighestAvailable $SecurePassword = Read-Host -AsSecureString -Prompt "Введите пароль для svc_backup" Set-ScheduledTask -TaskName "LegacyTask" -Principal $Principal -Password $SecurePassword ``

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

  • Get-ScheduledTask — получение информации о задачах.
  • New-ScheduledTask — создание новой задачи.
  • Enable-ScheduledTask / Disable-ScheduledTask — включение/отключение задачи.
  • Start-ScheduledTask / Stop-ScheduledTask — принудительный запуск/остановка.
  • Unregister-ScheduledTaskудаление задачи.
  • New-ScheduledTaskAction, New-ScheduledTaskTrigger, New-ScheduledTaskSettingsSet, New-ScheduledTaskPrincipal — вспомогательные командлеты для создания объектов, передаваемых в Set-ScheduledTask.

Версии и доступность

Командлет Set-ScheduledTask впервые появился в Windows PowerShell 4.0, который входит в состав Windows 8.1 и Windows Server 2012 R2. В более ранних версиях Windows (7, Server 2008 R2) он доступен после установки Windows Management Framework 4.0 или выше. В Windows PowerShell 5.0 и выше (Windows 10, Windows Server 2016 и новее) командлет входит в стандартную поставку. В PowerShell Core (версии 6 и 7) для Windows командлет также доступен, но требует установки модуля ScheduledTasks отдельно.

Источники

  • Microsoft Docs: Set-ScheduledTask (PowerShell ScheduledTasks module)
  • Windows IT Pro Center: Task Scheduler Overview
  • PowerShell Help System (Get-Help Set-ScheduledTask -Detailed)
  • Microsoft Learn: Automating Task Scheduler with PowerShell

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

На главную BFOmetr →