Вы можете использовать групповые политики для распространения запланированных заданий планировщика Windows (Task Scheduler) на компьютерах пользователей домена. Например, вы можете создать задание, которое автоматически завершит сессию пользователя/выключит компьютер пользователя в определенное время, или запустит определенный скрипт.
В этом примере мы через Group Policy Preferences создадим и распространим на компьютеры пользователей новое задание планировщика, которое будет выводить всплывающее уведомление пользователям.
- Откройте консоль управления доменными групповыми политиками (gpmc.msc), создайте новую GPO и назначьте ее на Organizational Unit с пользователями или компьютерами, на которые нужно назначить задание планировщика (если вы назначаете GPO на OU с компьютерами, нужно включить параметр Configure user Group Policy Loopback Processing mode в разделе Computer Configuration -> Administrative Templates -> System -> Group Policy, см. объяснение здесь);
- Перейдите в раздел User Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks;
- Создайте новое задание планировщика New -> Scheduled task (At least Windows 7);Пункт Immediate Task (at least Windows 7) позволяет создать задание, которое будет запущено только один раз, но максимально быстро (сразу после следующего обновления групповых политик на клиенте).
- Перед вами появится окно, похожее на стандартное окно настройки заданий планировщика Windows. Настройте параметры вашего задания;
- На вкладке General задайте Action = Update, укажите имя задания. Чтобы задание запускалось от имени пользователя укажите здесь
%LogonDomain%\%LogonUser%
. Для запуска задания с правами администратора, включите опцию Run with highest privileges;Если вы создаете задание планировщика в секции GPO Computer Configuration, можно запускать задание от имени системы (NT AUTHORITY\System
). - На вкладке Triggers укажите, когда нужно запускать задание. В моем случае я хочу запускать задание ежедневно в 17:00. Выберите New -> Begin the task On a schedule -> Daily, укажите время запуска задания;
- На вкладке Actions нужно указать команду или скрипт, которое нужно выполнить через планировщик. Укажите следующие параметры задания:Action: «Start a program»
Program/Script:C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments (optional):-ExecutionPolicy Bypass -command "& \\winitpro.ru\SysVol\winitpro.ru\scripts\ShowReminder.ps1"
Можно скопировать файл PS1 скрипта через GPO на компьютеры пользователей, или запускать скрипт напрямую из UNC каталога. В этом примере я запускаю PowerShell скрипт, отображающий всплывающее уведомление, из каталога SYSVOL на контроллере домена. Для обхода политики выполнения скриптов PowerShell на компьютерах пользователей, я использую параметр-ExecutionPolicy Bypass
. - Перезагрузите компьютер пользователя, чтобы применить к нему GPO. Откройте консоль Task Scheduler (
taskschd.msc
) и убедитесь, что в Task Scheduler Library появилось новое назначенное задание. Проверьте, что она отрабатывает согласно расписанию.
Start-ScheduledTask YourTaskName1
Обратите внимание, что в отличии от логон скриптов GPO, которые можно настроить на запуск только при загрузке/выключении компьютера, или входе/выходе пользователя, задания планировщика можно запускать в любое время или после наступления определенного события-триггера (см. пример, как запустить скрипт (действие) при запуске (завершении) определенной программы в Windows).[/alert]
А как настроить задание например по перезагркзке компьютера, если он включен более 5 суток и задание должно выполниться ночью?
Как костыль — можно через Immediate Task запустить скрипт PowerShell, которые создает обычное задание в планировщике на перезагрузку:
$Trigger= New-ScheduledTaskTrigger -At 12:00am -Once
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "shutdown -f -r -t 60"
Register-ScheduledTask -TaskName "Restart" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
https://winitpro.ru/index.php/2017/06/08/sozdanie-zadaniya-planirovshhika-s-pomoshhyu-powershell/
Но проще тогда уж через Invoke-Command или Enter-PsSession если компьютер один.
А в чем сложность то? Одной строчкой можно обойтись. Если я правильно понял, то вам надо принудительно перезагружать парк ПК, которые не перезапускались в течение 5 дней.
Создаете политику по настройке шедулера, как описано выше, которая будет запускаться ночью. А в скрипте указываете: if ((Get-CimInstance win32_operatingsystem).LastBootUpTime -lе (Get-Date).AddDays(-5)){Restart-Computer -Force}. Ну или оформляете красиво с переменными.
Но лучше добавить строку с уведомлением за несколько часов, что ПК будет перезагружен, иначе гнев пользователей о потере данных на вас.
У меня возник вопрос — можно ли на одну политику натравливать несколько сценариев запуска? В смысле — Logon, Schedule и/или еще какое-то условие для запуска? Суть — есть политика, применяется при запуске компа в сети. Все здорово, но часть компьютеров не перезагружают чуть ли ни месяцами, и, когда надо внести изменения с помощью политики — часть компьютеров обновляется сразу, а другие — работают по-старому. Не буду вдаваться, почему не очень вариант — принудительно перезагружать каждый, да и не нужно это, по сути, если можно ту же политику (запуск скрипта) принудительно выполнить вне рабочего времени. И во избежание ошибок и разночтений (скрипт обновляется и дописывается, а предполагается, что из будет больше) — хотелось бы как-то унифицировать работу — не две одинаковые политики с разными событиями для запуска, а одна, и несколько условий запуска. Это доступно?
У одного задания планировщика можно создать несколько независимых триггеров (условий запуска), как я понял это ваш вариант
А как отменить задание планировщика?
Например я сделал через GPO задание везде, оно прилетело на все ПК, в планировщике, все прекрасно работает.
Но через какое то время мне нужно отменить данное задание, например суть задания это выключение ПК по времени и я не хочу чтобы теперь он выключался.
А задание так и остается висеть на компьютерах. Придется ручками выпиливать?
Нет, можно удалить через те же GPO. Изменить это задание в GPP или создать новое (копированием) с Action=Delete
А такой вопрос, есть политика на подключение сетевых дисков. По идее должна применяться один раз, но на некоторых машинах повторяется постоянно. Хотел посмотреть в планировщике заданий, и как раз на тех машинах где GPO срабатывает постоянно, в планировщике, при просмотре задания на подключения диска, выпадает сообщение об ошибке «Консоль управления обнаружила ошибку в оснастке….». Может подскажете куда копать?
У вас диски подключаются через задания планировщика? или речь о подключении дисков через GPP https://winitpro.ru/index.php/2020/07/14/podklychit-setevoy-disk-windows-gpo/
Если через панировщик — то у него есть история запуска, изучайте ее.
Ошибка с ошибкой консоли врядли причина проблемы.
Добрый день!
А почему может быть такое, что политика прилетает, а заданий в шедулере не создается? В просмотре событий тоже пусто
gpresult точно показывает, что политика применена? Политику применили на компьютер? Если на пользователя, проверьте что включено замыкание
У меня тоже самое. Скрипт в задании отработал, gpresult показывает что политика применилась, а самого задания в планировщике нет. Создавал задачу на компьютер под системной учетной записью.
Добрый день!
Можете рассказать как работает создание задачи планировщика через GPO. Например, залогинился пользователь_1 на ПК_1, на этом ПК_1 создалась задача в планировщике (запускаться задача будет от имени пользователя_1? А если на этом же ПК_1 залогинится пользователь_2, то выполнится ли задача от имени пользователя_2?). Затем пользователь_1 логинится на ПК_2 — создастся ли задача для этого ПК_2? Или GPO считает, что уже отработало для пользователя_1? Запутался, помогите)
Зависит в каком контексте создана политика. Можно создать политику планировщика для пользователя, или для компьютера, а так-же указать в политике запуск от имени пользователя (конктерного или залогинившегося) либо от системы.
Зависит от задачи.
Здравствуйте. Применяет политика и добавляется задача в планировщик, только для первого пользователя ПК. У второго авторизованного пользователя, не применяет данная политика то есть задача не появляется в планировщике. Хотя в результе эта политика есть. В чем фокус? для первого пользователя да и для остальных нет. Проверено на многих ПК
Возможно, дело в том что имя задания планировщика в этом случае неуникальное.
Посмотрите события GPP в Event Viewer для второго пользователя, наверное там будет информация почему не создалось второе задание.
Здравствуйте.Вопрос можно ли таким же способом запретить приложение к примеру тим вивер анидеск и прочее , тогда как будет выглядеть скрипт?
Вариантов заблокировать много. Начиная с настройки Software Restriction Policies или applocker, блокировкой в антивирусе, просто создать в GPO политику Don’t run specified Windows applications.
Скрипт в планировщике, который проверяет наличие определенных процессов — не самое красивое решение
Добрый день. Не подскажите, существует ли способ при создании задания указать время периодического повторения отличное от предложенных вариантов. 5/10/15/30/1час ?
ну кроме как создавать таск скриптом и использовать
New-ScheduledTaskTrigger -RepetitionInterval
В GUI похоже нельзя. Как вариант, попробуйте вручную подредактировать xml файл задания в папки GPO на sysvol
\\s-dc01\SYSVOL\winitpro.local\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\ScheduledTasks\ScheduledTasks.xml"
Парметр Interval в секции Triggers->repetition. Например, смените с PT10M на PT8M (каждые 8 мин)
В GUI это не меняет настройки, но в политике которая приедет на клиента будет указанное вами время