Назначенные задания в windows server 2012

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

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:FBInst1ToolsFBBases-Backup.ps1`""
$Trigger = New-ScheduledTaskTrigger -Daily -At 23:00
$SvcUser = New-ScheduledTaskPrincipal -UserID KOMs-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:ProgrammsMyProgramm.exe"
$Trigger = @(
    $(New-ScheduledTaskTrigger -Daily -At 8:30),
    $(New-ScheduledTaskTrigger -Daily -At 20:30)
)
$SvcUser = New-ScheduledTaskPrincipal -UserID DOMAINgMSAAccount$ -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

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 —

Алексей Максимов


Profile picture for user Олег

Windows Server

Имеем Windows Server 2012 R2. Задача — автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.

Запускаем Планировщик заданий, создаём в нём папку «reboot»:

reboot

Делаем Create Basic Task… Запускается мастер:

reboot

Указываем Name, Description:

reboot

Кликаем Next:

reboot

Выбираем период Weekly. Next:

reboot

Указываем начало — ближайший понедельник 5 утра. Ставим галку Monday. Next:

reboot

Выбираем Start a program. Next:

reboot

В Program/script: пишем:

%SYSTEMROOT%System32shutdown.exe

В Add arguments (optional):

/r /f /t 90 /d p:0:0 /c "Перезапуск по понедельникам. Отмена: shutdown.exe /a"

Где:

  • /r — перезагрузка,
  • /f — принудительное закрытие всех приложений,
  • /t 90 — время ожидания до начала перезагрузки 90 сек,
  • /d p:0:0 — причины перезагрузки для журнала. В данном случае, мы указали: p — запланированная перезагрузка, 0:0 — «Other (planned)»,
  • /c  комментарий в свободной форме длинной не более 512 символов. Комментарий будет показываться юзерам 90 секунд. За это время можно отменить перезагрузку командой shutdown.exe /a.

Список параметров и причин перезагрузки можно посмотреть shutdown.exe /?

reboot

Мастер не доделали, кликаем Finish. Создаётся задача  — редактируем её.

win

Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:

reboot

Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:

win

Сам пока не проверял результатов. В ближайший понедельник посмотрим…

P.S.

Две недели прошло — шедулер нормально перезагружает сервер по понедельникам.

Большинство пользователей и администраторов привыкли использовать графический интерфейс консоли Taskschd.msc для создания заданий планировщика Windows (Task Scheduler), запускаемых по расписанию. Однако в различных скриптах и автоматизируемых задачах для создания заданий планировщика гораздо удобнее использовать возможности PowerShell. В этой статье мы покажем, как создавать и управлять заданиями планировщика Windows из PowerShell.

Содержание:

  • Управление заданиями Task Scheduler с помощью PowerShell
  • Как создать задание планировщика с помощью PowerShell?
  • Получение информации и запуск заданий планировщика из PowerShell
  • Экспорт и импорт заданий планировщика в XML файл

Управление заданиями Task Scheduler с помощью PowerShell

В Windows 10/Windows Server 2016 для управления задачами в планировщике используется PowerShell модуль ScheduledTasks. Список командлетов в модуле можно вывести так:

Get-Command -Module ScheduledTasks

  • Disable-ScheduledTask
  • Enable-ScheduledTask
  • Export-ScheduledTask
  • Get-ClusteredScheduledTask
  • Get-ScheduledTask
  • Get-ScheduledTaskInfo
  • New-ScheduledTask
  • New-ScheduledTaskAction
  • New-ScheduledTaskPrincipal
  • New-ScheduledTaskSettingsSet
  • New-ScheduledTaskTrigger
  • Register-ClusteredScheduledTask
  • Register-ScheduledTask
  • Set-ClusteredScheduledTask
  • Set-ScheduledTask
  • Start-ScheduledTask
  • Stop-ScheduledTask
  • Unregister-ClusteredScheduledTask
  • Unregister-ScheduledTask

powershell командлеты из модуля ScheduledTasks

Совет. Ранее в Windows для создания и управления заданиями планировщика в основном использовались встроенная консольная утилита schtasks.exe.

Как создать задание планировщика с помощью PowerShell?

В современных версиях PowerShell (начиная с PowerShell 3.0 в Windows Server 2012/Windows 8) для создания заданию планировщика нужно использовать командлеты New-ScheduledTaskTrigger и Register-ScheduledTask.

Предположим, наша задача создать задание планировщика, которое должно запускаться при загрузке компьютера (или в определенное время) и выполнять какой-то PowerShell скрипт. Создадим задание планировщика с именем StartupScript_PS. Данное задание должно каждый день в 10:00 запускать PowerShell скрипт, хранящийся в файле C:PSStartupScript.ps1 из-под учетной записи системы (SYSTEM). Задание будет выполняться с повышенными привилегиями (галка “Run with highest privileges”).

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITYSYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:PSStartupScript.ps1"
Register-ScheduledTask -TaskName "StartupScript_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

Если задание успешно создано, появится надпись Ready.

создать задание планировщика с помощью Register-ScheduledTask

Теперь ваш PowerShell скрипт будет запускаться по указанному расписанию. Если на вашем компьютере настроена PowerShell Execution Policy, блокирующая запуск скриптов PS1, вы можете запустить скрипт их планировщика с параметром –Bypass.

Используйте такую строку при создании нового задания:

$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:PSStartupScript.ps1"

Совет. Если нужно, чтобы задание запускалось каждый раз при загрузке компьютера, первая строка должна быть такой:
$Trigger= New-ScheduledTaskTrigger -AtStartup

Если нужно выполнять задание при входе пользователя:
$Trigger= New-ScheduledTaskTrigger –AtLogo
n

Откройте консоль
Taskschd.msc
и проверьте, что проверьте, что в Task Scheduler Library появилось новое задание планировщика.

консоль Task Scheduler с новым заданием планировщика

В версии Powershell 2.0 (Windows 7, Windows Server 2008 R2) для создания повторяющегося задания (ScheduledJob) из PowerShell необходимо воспользоваться COM интерфейсом Schedule.Service (либо обновите версию PowerShell). В этом примере мы создадим задание планировщика, которое во время запускает определённый файл с PowerShell скриптом во время загруки. Задание выполняется с правами системы (System).

$TaskName = "NewPsTask"
$TaskDescription = "Запуск скрипта PowerShell из планировщика"
$TaskCommand = "c:windowssystem32WindowsPowerShellv1.0powershell.exe"
$TaskScript = "C:PSStartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()

$rootFolder = $service.GetFolder("")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

Получение информации и запуск заданий планировщика из PowerShell

Вы можете вывести список всех активных заданий планировщика в Windows с помощью команды:

Get-ScheduledTask -TaskPath | ? state -ne Disabled

Чтобы получить информацию о конкретном задании:

Get-ScheduledTask CheckServiceState_PS| Get-ScheduledTaskInfo

LastRunTime : 4/6/2021 10:00:00 AM
LastTaskResult : 267011
NextRunTime : 4/7/2021 10:00:00 AM
NumberOfMissedRuns : 0
TaskName : CheckServiceState_PS
TaskPath : 
PSComputerName :

информация о запуске задания Get-ScheduledTaskInfo

Вы можете отключить это задание:

Get-ScheduledTask CheckServiceState_PS | Disable-ScheduledTask

Чтобы включить задание:

Get-ScheduledTask CheckServiceState_PS | Enable-ScheduledTask

Чтобы запустить задание немедленно (не дожидаясь расписания), выполните:

Start-ScheduledTask CheckServiceState_PS

отключить/включить/запустить задание планировщика с помощью PowerShell

Чтобы полностью удалить задание из Task Scheduler:

Unregister-ScheduledTask -TaskName CheckServiceState_PS

Если нужно изменить имя пользователя, из-под которого запускается задание и, например, режим совместимости, используйте командлет Set-ScheduledTask:

$task_user = New-ScheduledTaskPrincipal -UserId 'winitprokbuldogov' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win7'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settings

При появлении ошибки “Set-ScheduledTask : No mapping between account names and security IDs was done” проверьте, что у вас указано правильное имя пользователя.

Set-ScheduledTask : No mapping between account names and security IDs was done

Экспорт и импорт заданий планировщика в XML файл

С помощью PowerShell можно экспортировать любое задания планировщика в текстовый XML файл для распространения на другие компьютеры. Вы можете экспортировать задание из графического интерфейса Task Scheduler или из консоли PowerShell.

Следующая команда экспортирует задание StartupScript_PS в файл StartupScript_PS.xml:

Export-ScheduledTask "StartupScript_PS" | out-file c:tempStartupScript_PS.xml

Export-ScheduledTask - импорт задания планировщика в xml файла

Командлет Export-ScheduledTask не доступен в PowerShell 2.0. Поэтому в Windows 7 / 2008 R2 для экспорта настроек задания в XML файл лучше воспользоваться встроенной утилитой schtasks, вывод которой нужно перенаправить в текстовый файл:

schtasks /query /tn "NewPsTask" /xml >> "c:psNewPsTask.xml"

После того, как настройки задания планировщика экспортированы в XML файл, его можно импортировать на любой другой компьютер с помощи графической консоли, SchTasks.exe или PowerShell.

Воспользуйте командлетом PowerShell Register-ScheduledTask чтобы параметры задания из файла и зарегистрировать его:

Register-ScheduledTask -Xml (Get-Content “\Server1publicNewPsTask.xml” | out-string) -TaskName "NewPsTask"

Примечание. В PowerShell 2.0 (Windows 7/Server 2008 R2) импорт задания также проще выполнить с помощью утилиты schtasks. Первая команда создаст новое задание. Вторая – сразу запустит его (не дожидаясь срабатывания триггера).

schtasks /create /tn "NewPsTask" /xml "\Server1publicNewPsTask.xml " /ru corpaaivanov /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"

Обратите внимание, что в этом примере указаны данные учетной записи, из-под которой будет запускаться задание. Если имя и пароль учетной записи не указаны, то т.к. они не хранятся в задании, они будут запрошены при импорте.

  • Remove From My Forums
  • Question

  • I have three questions about Task Scheduler on Windows 2012 R2 and I hope someone would educate me, thx

    1. How do I enable History? by default, it is disabled. It says online that select a task scheduler, in Actions, enable all history, but no such item ‘Enable History’ in any drop-down menu in Task Scheduler.

    2. I schedule a ps1 script to copy file from local to remote server and it got error 0x103! Is there a site at Microsoft that lists all the error code for windows 2012 r2 task scheduler? I don’t have much luck looking for that!

    3. What Event ID would be for Task Scheduler?

    Thank you,


    Thang Mo

Answers

  • Hi ThangMo,

    In Server 2012r2 the Task Scheduler history is enabled by default, you can also use cmdlet to check the schedule task history, we can get the event ID same through the Task
    Scheduler task pane.

    Schtasks /Query /FO LIST /V

    The related KB:

    View Task Properties and History

    https://technet.microsoft.com/en-us/library/cc722006.aspx?f=255&MSPPError=-2147217396

    I’m glad to be of help to you!


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact tnmff@microsoft.com

    • Proposed as answer by

      Monday, April 13, 2015 3:27 AM

    • Marked as answer by
      Alex Lv
      Wednesday, April 22, 2015 9:31 AM

  • Remove From My Forums
  • Question

  • I have three questions about Task Scheduler on Windows 2012 R2 and I hope someone would educate me, thx

    1. How do I enable History? by default, it is disabled. It says online that select a task scheduler, in Actions, enable all history, but no such item ‘Enable History’ in any drop-down menu in Task Scheduler.

    2. I schedule a ps1 script to copy file from local to remote server and it got error 0x103! Is there a site at Microsoft that lists all the error code for windows 2012 r2 task scheduler? I don’t have much luck looking for that!

    3. What Event ID would be for Task Scheduler?

    Thank you,


    Thang Mo

Answers

  • Hi ThangMo,

    In Server 2012r2 the Task Scheduler history is enabled by default, you can also use cmdlet to check the schedule task history, we can get the event ID same through the Task
    Scheduler task pane.

    Schtasks /Query /FO LIST /V

    The related KB:

    View Task Properties and History

    https://technet.microsoft.com/en-us/library/cc722006.aspx?f=255&MSPPError=-2147217396

    I’m glad to be of help to you!


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact tnmff@microsoft.com

    • Proposed as answer by

      Monday, April 13, 2015 3:27 AM

    • Marked as answer by
      Alex Lv
      Wednesday, April 22, 2015 9:31 AM

  • Remove From My Forums

 none

назначение задания в групповых политиках для компьютера в домене

  • Question

  • Добрый день сообщество.

    Цель запускать скрипт с админскими правами для компьютера домена где пользователь есть пользователь домена.

    Создаю «назначенные задания» «скопировать шрифт для pdf» с разными параметрами — или не применяется политика или применяется но не срабатывает «назначенные задания»на компьютере домена.

    У пользователя на диске С:
    ARIALUNI.TTF
    copyFOND.bat

    Батник:
    @Echo Off
    chcp 1251
    copy C:ARIALUNI.TTF «C:Program Files (x86)AdobeReader 11.0ResourceFont» /y >C:1111.txt

    Сразу скажу, что варианты где нужно вводить и сохранять пароль, например создание задания в cmd командой schtasks.

    Итак на закладке «Общие» когда создаю задание:

     Имя : Копируем файл на рабочий стол

    При выполнения задач использовать следующего пользователя: OFFICEПользователи домена

    Выполнять только для зарегистрированного пользователя

    выполнить с наивысшими правами

    Политика выполняется и задание работает, но для copyFOND.bat нужны админиские права.

    Итак на закладке «Общие» когда создаю задание для выполнения под администратором:

     Имя : Копируем файл на рабочий стол

    При выполнения задач использовать следующего пользователя: OFFICEАдминистратор

    Выполнять только для зарегистрированного пользователя

    выполнить с наивысшими правами

    В журнале задачи:
    Планировщику заданий не удалось запустить задачу «скопировать шрифт для pdf», так как пользователь «OFFICEАдминистратор» не был зарегистрирован в системе, когда были выполнены все необходимые условия для запуска. Действие
    пользователя: войдите в систему или измените определение задачи таким образом, чтобы ее запуск был возможен без входа пользователя в систему.

    Меняю GP так:

     Имя : Копируем файл на рабочий стол

    При выполнения задач использовать следующего пользователя: OFFICEАдминистратор

    Выполнять внезависимости от регистрации пользователя

    выполнить с наивысшими правами

    Задача на пользовательском компе не создается, а журнал приложений пишет:
    Элемент предпочтения компьютер «скопировать шрифт для pdf» в объекте групповой политики «скопировать шрифт для PDF {D62830AC-2FFA-4125-9AC3-3143C980709A}» не применен по причине ошибки с кодом ‘0x80070005 Отказано
    в доступе.’ Эта ошибка была отключена.

    Прошу помощи реализовать GP

    • Edited by

      Friday, February 10, 2017 12:44 PM

Answers

  • Я выполнял копирование в конфигурации пользователя, а не компьютера. для не администратора а обычного пользователя все скопировалось, для имитации этого сценария даже акробат поставил и копировал именно туда файлик, куда изначально
    было предложено, по тому же пути.

    >Напрашивается вывод что не хватает прав на доступ к \192.168.0.111share1.txt

    Очень может быть, что на общей папке нет права чтение для группы «пользователи прошедшие проверку» компьютеры тоже входят в эту группу.

    • Marked as answer by
      SanblchSun
      Wednesday, February 15, 2017 8:29 AM

Понравилась статья? Поделить с друзьями:
  • Наименование папок на рабочем столе windows синим цветом
  • Назначенные задания в windows server 2008
  • Наилучший вид windows 10 как установить
  • Назначением служебного приложения windows архивация данных является
  • Назначением значка мой компьютер в windows является