Powershell. Работа с TaskScheduler

В этой заметке рассмотрим несколько паттернов для работы с планировщиком задач Windows средствами стандартного модуля ScheduledTasks

Обновление учетных данных для заданий которые хранят пароли
$NewTaskCreds = Get-Credential -Credential "Domain\User"

Если Get-ScheduledTask отработав не возвращает заведомо существующее задание, то на это скорее всего просто нет прав для текущей учетной записи — используйте учетку с повышенными привилегиями, или ту под которой запускается задача.

Get-ScheduledTask Test_ChangeTask -TaskPath \ |`
Set-ScheduledTask -User $NewTaskCreds.UserName -Password $NewTaskCreds.GetNetworkCredential().Password

Если выдает ошибку «The user name or password is incorrect«, то вы вводите неактуальный пароль для выбранной учетной записи.

Удаленно изменить Description задачи
$task = Get-ScheduledTask -CimSession RemoteServer -TaskName "SourceTask"
$task.Description = "Новое описание"
$task | Set-ScheduledTask -User "$env:userdomain\Username"
Создание задачи на основе другой задачи

Можно создать задачу с параметрами родительской задачи, и точечно изменить любую часть параметров.

Если исходная задача имеет -LogonType Password, то ее можно без проблем заменить на Interactive. Но не наоборот — поменять Interactive на Password у меня не вышло.

$principal = New-ScheduledTaskPrincipal -UserID "scriptadmin" -RunLevel Highest -LogonType Interactive
( Get-ScheduledTask "SourceTask" ) |`
% { Register-ScheduledTask -TaskName "NewTask" -Action $_.Actions -Description $_.Description -Trigger $_.triggers -Principal $principal -Force }

Так же успешно можно задать запуск задачи от учетной записи «System». Для нее не требуется ввода пароля, и ошибка не возникнет
( Конечно если у объекта компьютера будут все необходимые на это действие права, так как сетевое взаимодействие инициируется от его лица ):

$principal = New-ScheduledTaskPrincipal -UserID "System" -RunLevel Highest -LogonType ServiceAccount
( Get-ScheduledTask "SourceTask" ) |`
% { Register-ScheduledTask -TaskName "NewTask" -Action $_.Actions -Trigger $_.triggers -Principal $principal -Force }

 

Добавить комментарий

Ваш адрес email не будет опубликован.