Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:how-to-create-a-windows-scheduler-task-on-behalf-of-msa-gmsa-in-powershell

Как создать задание Планировщика Windows Task Scheduler от имени учётной записи MSA/gMSA в PowerShell

Графическая оболочка Планировщика заданий Windows Task Scheduler в ОС Windows Server 2012 R2 не умеет работать с учётными записями MSA/gMSA. Однако для настройки задания планировщика Windows, которое должно выполняться от имени сервисной учётной записи MSA/gMSA, мы можем воспользоваться возможностями оболочки PowerShell.


Создание простого задания

Запустим оболочку PowerShell с правами Администратора и создадим простое задание планировщика Windows для запуска некоторого PS-скрипта с ежедневным выполнением, например в 23:00:

$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
 -Argument "-NoProfile -command `"D:\FBInst1\Tools\FBBases-Backup.ps1`""
$Trigger = New-ScheduledTaskTrigger -Daily -At 23:00
$SvcUser = New-ScheduledTaskPrincipal -UserID KOM\s-S11$ -LogonType Password
Register-ScheduledTask -TaskName "Firebird DBs (Instance1) Backup" `
-Action $Action -Trigger $Trigger -Principal $SvcUser

Откроем графическую консоль управления планировщиком Windows и проверим корректность созданного задания.


Изменение созданного задания

В случае необходимости изменения созданного задания с использованием учётной записи MSA/gMSA не нужно пытаться изменить здание через графическую консоль, так как это приведёт к запросам аутентификации для учётной записи gMSA и ошибкам сохранения задания. Изменить созданное задание можно с помощью PowerShell. Например, чтобы изменить время запуска задания можем выполнить следующий код:

$Trigger = New-ScheduledTaskTrigger -Daily -At 23:05
Set-ScheduledTask -TaskName "Firebird DBs (Instance1) Backup" -Trigger $Trigger


Задания со сложным расписанием

Рассмотрим ещё один пример создания задачи планировщика, но уже с более сложным расписанием выполнения. Например, нам нужно, чтобы задание выполнялось дважды в день в определённое время. В этом случае в качестве значения триггера используется массив объектов, созданных командлетом New-ScheduledTaskTrigger. Например, задача, выполняемая ежедневно утром и вечером в определённое время может быть создана так:

$Action = New-ScheduledTaskAction -Execute "C:\Programms\MyProgramm.exe"
$Trigger = @(
    $(New-ScheduledTaskTrigger -Daily -At 8:30),
    $(New-ScheduledTaskTrigger -Daily -At 20:30)
)
$SvcUser = New-ScheduledTaskPrincipal -UserID DOMAIN\gMSAAccount$ -LogonType Password
$TDescription = 'Описание моей задачи'
Register-ScheduledTask -TaskName "My Task" -TaskPath "\My Tasks" -Action $Action `
-Trigger $Trigger -Principal $SvcUser -Description $TDescription

Если требуется постоянный цикличный запуск задания, например, каждые 5 минут, то значение триггера можно задать следующим образом:

$Trigger = New-ScheduledTaskTrigger `
    -Once `
    -At (Get-Date) `
    -RepetitionInterval (New-TimeSpan -Minutes 5) `
    -RepetitionDuration ([System.TimeSpan]::MaxValue)

Ещё один пример указания триггера с условием, что задание должно выполняться в определённое время, но только по рабочим дням недели:

$Trigger = New-ScheduledTaskTrigger -Weekly `
-DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -At 9:10


Триггер -AtStartup

При создании заданий Планировщика с триггером по запуску ОС (-AtStartup) может потребоваться дополнительно установить в свойствах триггера небольшую задержку по времени для того, чтобы дать возможность завершения инициализации механизмов доменной аутентификации. Пример такой настройки рассмотрен здесь.

# Добавляем в первый триггер задания Планировщика 3-минутную задержку перед запуском
# А также отключаем ограничение времени выполнения задания
# Формат указания длительности времени https://en.wikipedia.org/wiki/ISO_8601#Durations 
#
$Task.Triggers[0].Delay = "PT3M"
$Task.Settings.ExecutionTimeLimit = "PT0S"
$Task | Set-ScheduledTask

Проверено на следующих конфигурациях:

Версия ОС
Windows Server 2012 R2 Standard EN (6.3.9600)

Автор первичной редакции:
Алексей Максимов
Время публикации: 06.06.2019 20:51

Обсуждение

ЛеонидЛеонид, 09.11.2021 08:38
У меня задание создаётся, но поскольку указан -LogonType Password то необходим вход в систему под этой учёткой.
Т.е. в фоне не работает. В журнале задания так и пишет, не было запущено т.к. пользователь не вошёл в систему.
Алексей МаксимовАлексей Максимов, 09.11.2021 10:07
Не надо лохматить бабушку. Всё здесь описанное - работает.
ЛеонидЛеонид, 09.11.2021 16:06
Интересно, почему тогда сами M$ пишет что https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/ff641729(v=ws.10)#supported-technologies
Алексей МаксимовАлексей Максимов, 09.11.2021 16:25
Может быть потому, что приведённый документ "Applies To: Windows 7, Windows Server 2008 R2", а данная статья Вики написана про Windows Server 2012 R2 (о чем здесь аж два раза написано)?... Неожиданно, правда?
ЛеонидЛеонид, 09.11.2021 16:47
Почему то админ хочет "бодаться", а не помогать, но то не интересно выяснять причины.

Проблема: При попытке создать задачу планировщика из PowerShell на Windows Server 2012 при использовании MSA вам сообщают об ошибке.
Решение:
1) Поднять уровень леса
и
2) использовать gMSA

Ссылки в тему:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/ff641729(v=ws.10)#supported-technologies

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj128431(v=ws.11)#step-2-configuring-service-identity-application-service
Алексей МаксимовАлексей Максимов, 09.11.2021 18:03
Правильно сформулированный вопрос содержит в себе половину ответа. А правильно сформулированный вопрос - это вопрос с исчерпывающим изложением среды воспроизведения, а не заявления в духе "не работает". Кроме этого, если напрячь логику, подняться в Вики на уровень выше и пройти по соседней ссылке, то можно увидеть и такое:

https://wiki.it-kb.ru/microsoft-windows/windows-server-2012-r2/adds/how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa/prerequisites-for-using-msa-and-gmsa-accounts
Ваш комментарий:
 
microsoft-windows/windows-server-2012-r2/adds/how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa/how-to-create-a-windows-scheduler-task-on-behalf-of-msa-gmsa-in-powershell.txt · Последнее изменение: 13.10.2019 14:02 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki