===== Как создать задание Планировщика Windows Task Scheduler от имени учётной записи MSA/gMSA в PowerShell ===== {{:microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20190606-212754.png }} Графическая оболочка Планировщика заданий **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
{{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20190606-214042.png }} Откроем графическую консоль управления планировщиком Windows и проверим корректность созданного задания. {{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20190606-214116.png }} \\ ==== Изменение созданного задания ==== В случае необходимости изменения созданного задания с использованием учётной записи MSA/gMSA не нужно пытаться изменить здание через графическую консоль, так как это приведёт к запросам аутентификации для учётной записи gMSA и ошибкам сохранения задания. Изменить созданное задание можно с помощью PowerShell. Например, чтобы изменить время запуска задания можем выполнить следующий код:
$Trigger = New-ScheduledTaskTrigger -Daily -At 23:05
Set-ScheduledTask -TaskName "Firebird DBs (Instance1) Backup" -Trigger $Trigger
{{ :microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:pasted:20190606-214326.png }} \\ ==== Задания со сложным расписанием ==== Рассмотрим ещё один пример создания задачи планировщика, но уже с более сложным расписанием выполнения. Например, нам нужно, чтобы задание выполнялось дважды в день в определённое время. В этом случае в качестве значения триггера используется массив объектов, созданных командлетом **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) может потребоваться дополнительно установить в свойствах триггера небольшую задержку по времени для того, чтобы дать возможность завершения инициализации механизмов доменной аутентификации. Пример такой настройки рассмотрен [[https://blog.it-kb.ru/2019/10/13/running-hpe-product-bulletin-gateway-in-group-managed-service-account-gmsa-account-context-with-windows-task-scheduler/|здесь]].
# Добавляем в первый триггер задания Планировщика 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) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 06.06.2019 20:51 {{tag>"Windows Server" "Windows Server 2012 R2" ADDS "Active Directory" MSA gMSA "Managed Service Account" "Group Managed Service Account" "Task Scheduler" PowerShell Run-As}} ~~DISCUSSION~~