Вы можете использовать групповые политики для распространения запланированных заданий планировщика 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 точно показывает, что политика применена? Политику применили на компьютер? Если на пользователя, проверьте что включено замыкание