Командлет 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 →