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
· Последнее изменение: 13.10.2019 14:02 —
Алексей Максимов
Настройка планировщика для Windows
В инструкции описано использование планировщика Windows на виртуальных серверах под управлением операционной системы семейства Windows.
Что это такое?
Планировщик Windows используется для выполнения задач (в фоновом режиме) в указанное время или в качестве реакции на событие в системе. Расписание, например, можно использовать для проверки системы на наличие вредоносных программ или выполнения определенных скриптов.
Виртуальный сервер на базе Windows
- Лицензия включена в стоимость
- Тестирование 3-5 дней
- Безлимитный трафик
Как открыть планировщик Windows
Для того чтобы открыть планировщик Windows:
- Откройте панель управления (Control Panel)
- Откройте вкладку System and Security
- На закладке Administrative Tools выберете ссылку Schedule tasks.
Перед вами появится окно планировщика Windows.
Примечание: также можно открыть планировщик с помощью поиска Windows.
Создание простого задания
Для создания простого задания откройте планировщик и выберете в меню справа Create Basic Task.
В поле Name введите удобное для вас название задачи, в поле Description при необходимости описание задачи.
На следующем шаге выберете частоту запуска: ежедневно, еженедельно,ежемесячно, один раз, при запуске компьютера, при входе в систему, при специфическом событии.
Укажите дату и время начала работы задания, а также периодичность, например запуск команды раз в 2 дня.
Далее выберете запуск программы в качестве действия.
Укажите путь до исполняемого файла, при необходимости введите дополнительные аргументы.
Проверьте введенные ранее настройки и нажмите Finish.
Создание обычного задания
Для создания обычного задания откройте планировщик и выберете в меню справа Create Task.
На вкладке General заполните поле Name именем задания. Также можно указать дополнительные параметры безопасности, такие как пользователь и группа пользователей, от имени которых выполняется задача, запуск задачи от имени суперпользователя.
На закладке Triggers необходимо создать расписание работы задачи с помощью кнопки New.
Здесь можно выбрать условие запуска задачи, например по расписанию, при входе в систему, при блокировке или разблокировке системы.
Например можно задать следующее расписание: начиная с 1 марта 2018 года еженедельно во во вторник, пятницу и воскресенье в 10:30 утра выполнять указанную задачу. Интерфейс настроек прост и интуитивно понятен.
На закладке Actions необходимо указать действия, которые будут выполняться по расписанию, с помощью кнопки New.
Укажите путь до исполняемого файла, при необходимости введите дополнительные аргументы. Нажмите OK.
Ниже приведены скриншоты расширенных настроек и условий, при необходимости их можно использовать.
Выполнение задания
Результат выполнения задания можно посмотреть в планировщике в центре рабочей области.
Источник
Перезагрузка Windows сервера планировщиком заданий
Имеем Windows Server 2012 R2. Задача — автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.
Запускаем Планировщик заданий, создаём в нём папку «reboot»:
Делаем Create Basic Task. Запускается мастер:
Указываем Name, Description:
Выбираем период Weekly. Next:
Указываем начало — ближайший понедельник 5 утра. Ставим галку Monday. Next:
Выбираем Start a program. Next:
В Program/script: пишем:
В Add arguments (optional):
- /r — перезагрузка,
- /f — принудительное закрытие всех приложений,
- /t 90 — время ожидания до начала перезагрузки 90 сек,
- /d p:0:0 — причины перезагрузки для журнала. В данном случае, мы указали: p — запланированная перезагрузка, 0:0 — «Other (planned)»,
- /c комментарий в свободной форме длинной не более 512 символов. Комментарий будет показываться юзерам 90 секунд. За это время можно отменить перезагрузку командой shutdown.exe /a.
Список параметров и причин перезагрузки можно посмотреть shutdown.exe /?
Мастер не доделали, кликаем Finish. Создаётся задача — редактируем её.
Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:
Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:
Сам пока не проверял результатов. В ближайший понедельник посмотрим.
Две недели прошло — шедулер нормально перезагружает сервер по понедельникам.
Источник
Вики IT-KB
Пошаговые руководства, шпаргалки, полезные ссылки.
Инструменты пользователя
Инструменты сайта
Боковая панель
Содержание
Как создать задание Планировщика Windows Task Scheduler от имени учётной записи MSA/gMSA в PowerShell
Графическая оболочка Планировщика заданий Windows Task Scheduler в ОС Windows Server 2012 R2 не умеет работать с учётными записями MSA/gMSA. Однако для настройки задания планировщика Windows, которое должно выполняться от имени сервисной учётной записи MSA/gMSA, мы можем воспользоваться возможностями оболочки PowerShell.
Создание простого задания
Запустим оболочку PowerShell с правами Администратора и создадим простое задание планировщика Windows для запуска некоторого PS-скрипта с ежедневным выполнением, например в 23:00:
Откроем графическую консоль управления планировщиком Windows и проверим корректность созданного задания.
Изменение созданного задания
В случае необходимости изменения созданного задания с использованием учётной записи MSA/gMSA не нужно пытаться изменить здание через графическую консоль, так как это приведёт к запросам аутентификации для учётной записи gMSA и ошибкам сохранения задания. Изменить созданное задание можно с помощью PowerShell. Например, чтобы изменить время запуска задания можем выполнить следующий код:
Задания со сложным расписанием
Рассмотрим ещё один пример создания задачи планировщика, но уже с более сложным расписанием выполнения. Например, нам нужно, чтобы задание выполнялось дважды в день в определённое время. В этом случае в качестве значения триггера используется массив объектов, созданных командлетом New-ScheduledTaskTrigger. Например, задача, выполняемая ежедневно утром и вечером в определённое время может быть создана так:
Если требуется постоянный цикличный запуск задания, например, каждые 5 минут, то значение триггера можно задать следующим образом:
Ещё один пример указания триггера с условием, что задание должно выполняться в определённое время, но только по рабочим дням недели:
Триггер -AtStartup
При создании заданий Планировщика с триггером по запуску ОС (-AtStartup) может потребоваться дополнительно установить в свойствах триггера небольшую задержку по времени для того, чтобы дать возможность завершения инициализации механизмов доменной аутентификации. Пример такой настройки рассмотрен здесь.
Проверено на следующих конфигурациях:
Автор первичной редакции:
Алексей Максимов
Время публикации: 06.06.2019 20:51
Источник
This article has detailed steps to schedule a restart of your Windows VPS Machine 2008/2012/2016. This can be achieved by just adding a task at task scheduler of your Windows Server Machine.
- Login into your Window server remote desktop.
- Open Run prompt, type taskschd.msc, and click ok.
3. Now Go to Action >> Create task.
4. set the name of your task and select the operating system of your windows vps from drop-down.
Please remember to check the following option :
a. Run whether user is logged on or not
b. Run with highest privileges
5. Now Go to Trigger tab and schedule the time of reboot. (by clicking on New…) in this stage, you can define the time you want to schedule a reboot. (weekly, daily, or monthly)
6. Now set the reboot action with adding command C:WindowsSystem32shutdown.exe with add argument /r and click ok. (by clicking on Action Tab)
That’s all. This machine (VPS , VM and other ..) is now set to reboot every weekend.
- 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
-
Proposed as answer by
Имеем Windows Server 2012 R2. Задача — автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.
Запускаем Планировщик заданий, создаём в нём папку «reboot»:
Делаем Create Basic Task… Запускается мастер:
Указываем Name, Description:
Кликаем Next:
Выбираем период Weekly. Next:
Указываем начало — ближайший понедельник 5 утра. Ставим галку Monday. Next:
Выбираем Start a program. Next:
В 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 /?
Мастер не доделали, кликаем Finish. Создаётся задача — редактируем её.
Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:
Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:
Сам пока не проверял результатов. В ближайший понедельник посмотрим…
P.S.
Две недели прошло — шедулер нормально перезагружает сервер по понедельникам.
G’day Windows lovers.
Again, this is not a SharePoint post per se, but hey, we all need to Schedule a task from time to time, unless we have completely flown into the clouds…
No need for any command prompt, at.exe, schtasks.exe or anything like that. This can all be done from the gui.
Note: Some people may state that it is a bad idea running a scheduled task as system, that this is bad for security reasons. I can agree with both sides but a fact is that Microsoft has a number of their default scheduled tasks running as system, so it can’t all be wrong. Also, running the task as a different administrator account is even worse, so…do as you like here. Secure the location of the script files, at least do that.
Good or bad, it is still a fact that some people in some situations want to do this, run a script as system, perhaps for the simplicity of it, for not having to rely on service accounts beeing created or other reasons good or bad.
Step by step:
Note: These steps have been verified on Windows Server 2012, but will function just as well on Windows Server 2012 R2 or Windows Server 2008R2/Windows Server 2008, Windows 7 nd Windows 8x
–
Note: You have to be logged on as a local administrator in order to follow these steps.
Start the Windows Task Scheduler, from the ‘Start’ menu or search, any way works…
When the Windows Task Scheduler is open, Browse to a task under Microsoft. I’m using a .NET Framework task in my example, that will work…
Have a look at the tasks in the .NET Framework container. Select the task at the top and make sure that it is a task running as System by checking its properties.
The properties at the bottom will show you if the task is configured to run as SYSTEM. If the task selected is not, pick another task in the list until you find one that is.
Right-click on the task and select export.
Save the file to a good location locally on the server and give it a good name.
Replace the default name with something of your own:
Save the file, then back in Task Scheduler, select the top of the tree, Task Scheduler Library.
Right-click on Task Scheduler Library and select Import Task…
Browse to the file you just exported.
Click on Open to start the import of the task. Name the new task with the name you want, you now have an exact copy of the default .NET framework task, now we need to make modifications so that it will suit your needs.
Right-click on the task, select Properties to make all the settings available for change.
In my example, I want the task to start a PowerShell script as system.
In order to do that, go to the Actions tab.
Delete the existing action, in my example ‘Custom handler’ and add your own.
If you like me, want to run a PowerShell script, type powershell in the program field and type the path to your .ps1 file in the Add Arguments field.
Save the new action and verify the values.
Now, change all the parameters to suit your needs. For example, you might want to add a scheduled trigger.
Click on the Triggers tab and add the Schedule you need.
In my example, I added a Schedule that starts the task at 07:00 every day and keeps doing this forever…
Now, as a last step, select the completed task under the Task Scheduler Library and verify all the settings, especially, make sure that it is configured to run as SYSTEM!
I also selected Run with highest privilieges in my example because the script I had writted required Run as Administrator to function properly.
Thats all, you’re done! Good luck!
References:
Thanks to:
Me, Myself and I!
___________________________________________________________________________________________________
Enjoy!
Regards
Twitter | Technet Profile | LinkedIn
Дано: система электронного обучения LMS Moodle установлена в IIS на Windows Server 2012 R2.
Задача: настроить периодический запуск специального файла cron.php
Что такое cron в Moodle и почему он важен? Это специальная сервисная процедура, которая обслуживает процессы, происходящие в системе мудл, такие как очистка данных, резервирование, отправка оповещений и т.п. Если ее не запускать, то нормальная работа система может быть нарушена.
Если крон не запускался более суток, то администратор увидит об этом сообщение, если перейдет в административном меню по ссылке «Уведомления«:
Cron должен запускаться как можно чаще, обычно рекомендуют устанавливать периодичность запуска каждые 5 минут.
Крон может запускаться как из браузера, так и прямым доступом к его файлу: cron.php.
Например, можно проверить работу крона перейдя по адресу:
<URL-адрес Moodle>/admin/cron.php
Если при переходе по данному адресу появилось сообщение: «!!! Извините, доступ к этой странице через интернет заблокирован администратором. !!!», то значит возможность запуска крона из браузера заблокирована.
Желательно, чтобы возможность запуска крона из браузера была отключена в целях безопасности. Чтобы это сделать, в административном меню Moodle переходим:
/ Администрирование
/ Безопасность
/ Политика безопасности сайта
На открывшейся странице находим и устанавливаем параметр «Запуск cron только из командной строки (cronclionly)«
Если этот параметр установлен, то cron может быть запущен только из командной строки, а не через веб-интерфейс.
Теперь необходимо настроить запуск крона из командной строки.
На странице официальной документации — https://docs.moodle.org/29/en/Cron_with_Windows_OS как самый быстрый способ настройки — предлагают установить специальную утилиту, которая создаст службу в системе Windows. Однако данная служба будет запускать крон из браузера, а мы эту возможность отключили. Поэтому способ не подходит.
Запуск крона будем настраивать через стандартный планировщик системы Windows — Task Scheduler.
Предварительно создайте пользователя в системе, например, usercron. Его учетную запись будем использовать для запуска процесса крона. Для создания системного профиля один раз заходим под этим пользователем в систему.
Также даем право modify данному пользователю на папку с данными Moodle.
Далее создаем bat-файл (например, cron.bat) со следующим содержимым (скриптом):
@echo off set PathPHP="C:Program Files (x86)PHPv5.6php.exe" set PathCron="C:inetpubmoodleadminclicron.php" set PathLOG="D:Logscronlogs" %PathPHP% -f %PathCron% >> %PathLOG%%date:~10,4%%date:~4,2%%date:~7,2%.log Forfiles /P %PathLOG% /S /M *.log /D -5 /C "cmd /c del /q @path"
В данном скрипте необходимо правильно задать пути:
PathPHP — путь к запускному файлу php (его можно посмотреть по кнопке PHP Manager в IIS)
PathCron — абсолютный путь к файлу крона: <путь папки с Moodle>adminclicron.php
PathLOG — любое место, куда будут записываться логи крона
Данный скрипт запускает крон по указанному пути, результат его работы записывает в лог-файл, а также удаляет логи старше 5 дней.
Для проверки можно запустить данный скрипт от имени созданного ранее пользователя, чтобы заранее выявить возможные ошибки.
При отработке крона в логах можно обнаружить такую ошибку:
Fatal error: $CFG->dataroot is not writable, admin has to fix directory permissions! Exiting.
Это означает, что пользователю usercron не заданы права записи на Moodle-папку для хранения данных. Задайте права, если Вы забыли это сделать.
Далее необходимо настроить планировщик таким образом, чтобы данный скрипт запускался, допустим, каждые 10 минут (либо можете настроить на каждые 5 минут).
Открываем встроенный планировщик Windows (Task Scheduler) и добавляем новую задачу:
На вкладке General новой задачи задаем поля имени задачи.
В блоке Security options нажимаем «Change User…» и указываем ранее созданного пользователя (usercron), задавая таким образом пользователя для запуска задачи.
Также выбираем параметр «Run whether user is logged on or not«, чтобы задача выполнялась всегда, не зависимо от того, залогинен наш пользователь или нет.
Конфигурацию указываем — Windows Server 2012 R2:
На вкладке Триггеры (Triggers) нужно будет задать периодичность запуска задачи. Нажимаем кнопку New и настраиваем расписание запуска (я поставила на каждые 10 минут):
На вкладке Действия (Action) задаем, что нужно сделать. Нажимаем кнопку New и выбираем «Start a program«, а в поле «Program/script» указываем путь к только что созданному bat-файлу:
На вкладке Условия (Conditions) оставляем всё по умолчанию:
Настраиваем под себя вкладку Настройки (Settings):
После нажатия на ОК попросят ввести пароль указанного ранее пользователя, а затем может возникнуть сообщение:
This task requires that the user account specified has Log on as batch job rights
Это означает, что пользователю необходимо предоставить право регистрироваться для запуска пакета команд.
Если проигнорировать это сообщение, то при запуске задания будет возникать ошибка:
Task Scheduler failed to start «Moodle Cron Service» task for user «ServerNameusercron». Additional Data: Error Value: 2147943785.
Нам нужно предоставить дополнительные привилегии для нашего пользователя (usercron). Для того запускаем в системе оснастку Local Security Policy:
В открывшемся окне находим ветку «Local Policies — User Rights Assignment«:
Открываем настройку «Log on as a batch job» и к уже имеющемуся списку пользователей добавляем нашего usercron (по кнопке Add User or Group):
После этого запускаем нашу задачу в планировщике. По лог-файлам можно отследить ход выполнения процедуры cron. Через 5 дней желательно проверить, что старые логи удаляются, согласно заданному скрипту.
См. также Установка Moodle на Windows Server 2012 R2 и IIS
Другие инструкции по Moodle
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.