none
Время (таймаут) выполнения скриптов групповой политики при выключении компьютера. RRS feed

  • Вопрос

  • Всем привет.

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

    В моем случае, необходимо запускать скрипт полной проверки компьютера на вирусы, и как вы понимаете длится этот процесс может до нескольких часов. Когда искал решение этой проблемы, встречал что люди например при выключении компьютера запускают скрипт бэкапа всех наработанных данных пользователя, и когда они достигают нескольких гигабайт скрипт так же не успевает завершить свою работу, система завершает процесс клиента групповой политики gpsvc.

    Для реализации данной задачи 

    Сначала включаем отображение консоли при завершении работы, чтобы пользователь мог видеть работу и сообщения нашего скрипта, а так же закрыть его и завершить работу Windows немедленно если захочет.
    Конфигурация компьютера \ Административные шаблоны \ Система \ Сценарии - Выполнить сценарии завершения работы с отображением команд (Включить)
    Computer Configuration  \ Policies \ Administrative Templates \ System \ Scripts - Display instructions in shutdown scripts as they run (Enabled)


    Далее прописываем путь к скрипту в 

    Computer Configuration  \ Policies \ Windows Settings \ Scripts (Startup/Shutdown) - Shutdown

    Конфигурация компьютера \ Конфигурация Windows \ Сценарии (запуск\завершение) - Завершение работы

    И по умолчанию при выключении компьютера, система автоматически завершает работу таких скриптов ровно через 10 минут.

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

    Computer Configuration  \ Policies \ Administrative Templates \ System \ Scripts - Specify maximum wait time for Group Policy scripts

    Конфигурация компьютера \ Административные шаблоны \ Система \ Сценарии - Максимальное время выполнения сценариев групповой политики

    По умолчанию там установлено значение 600 секунд (10 минут), меняем его на максимальное 32000 (8,8 часов) либо на 0 (ждать бесконечно)

    И данная настройка работает в старенькой Windows XP скрипт работает сколь угодно долго! но перестает работать в следующих системах .

    Windows 10 начинает убивать Клиент групповой политики ровно через 24 минуты

    Windows 8.1 и Windows 7 убивают Клиент групповой политики ровно через 15 минут

    Реализация обслуживания когда пользователь уже ушел и ему все равно, очень удобна для всех. И сам майкрософт этим активно пользуется когда  можно выбрать пункт в винде - Запустить обновление и выключить компьютер.

    Помогите найти что убивает Клиент групповой политики.

    15 ноября 2019 г. 9:29

Ответы

  • Отвечаю сам себе, решение такое:

    Скрипт при завершении работы, работает любое количество времени только при наведении на политику пользователя.

    Конфигурация пользователя \ Конфигурация Windows \ Сценарии(запуск\завершение) - Выход из системы (ваш скрипт)

    Соответственно чтобы видеть работу скрипта нужно включить:

    Конфигурация пользователя \ Административные шаблоны \ Система \ Сценарии - Отображает команды сценариев выхода во время их выполнения (Включить)

    И самое главное не забудьте включить именно в КОНФИГУРАЦИИ КОМПЬЮТЕРА максимальное время работы скриптов 

    Конфигурация компьютера \ Административные шаблоны \ Система \ Сценарии - Максимальное время выполнения сценариев групповой политики (Включить 0-бесконечно)

    Если что-то будет виснуть, пользователь позвонит с утра и вы сможете увидеть где затык.

    • Помечено в качестве ответа Alexes777 28 ноября 2019 г. 12:56
    28 ноября 2019 г. 12:55

Все ответы

  • Есть ли у кого идея как заставить Windows ждать завершения работы службы до нескольких часов?

    Сейчас же не понятно то ли баг, то ли фича, но начиная с Windows 7 система просто вырубается через 15-24 минут и в логах это выглядит как неожиданное завершение работы системы.

    18 ноября 2019 г. 13:49
  • Если задача выполняется несколько часов, стоит её планировать во время выключения ПК?

    А если пользователь не будет выключать ПК на протяжении нескольких дней?

    Возможно, лучше запланировать выполнение задачи в заданное время (с выводом уведомления пользователю о том, чтобы он не выключал ПК)?

    23 ноября 2019 г. 6:41
  • 95% пользователей выключают свои ПК, поэтому задача более чем актуальна именно при выключении компьютера.

    А для тех кто не выключает, другая аналогичная задача будет выполняться ночью, тут вообще никаких проблем нет.

    А предупреждать пользователей чтобы не выключали компьютер - гиблое дело. Кто то через 5 минут уже забывает что нужно не выключать. К тому же как распознавать тех кто реально не хочет выключать в этот день, а скрипт ему погасит компьютер по завершении работы.

    28 ноября 2019 г. 8:26
  • Отвечаю сам себе, решение такое:

    Скрипт при завершении работы, работает любое количество времени только при наведении на политику пользователя.

    Конфигурация пользователя \ Конфигурация Windows \ Сценарии(запуск\завершение) - Выход из системы (ваш скрипт)

    Соответственно чтобы видеть работу скрипта нужно включить:

    Конфигурация пользователя \ Административные шаблоны \ Система \ Сценарии - Отображает команды сценариев выхода во время их выполнения (Включить)

    И самое главное не забудьте включить именно в КОНФИГУРАЦИИ КОМПЬЮТЕРА максимальное время работы скриптов 

    Конфигурация компьютера \ Административные шаблоны \ Система \ Сценарии - Максимальное время выполнения сценариев групповой политики (Включить 0-бесконечно)

    Если что-то будет виснуть, пользователь позвонит с утра и вы сможете увидеть где затык.

    • Помечено в качестве ответа Alexes777 28 ноября 2019 г. 12:56
    28 ноября 2019 г. 12:55
  • Можно просто вывести окно на ПК пользователя при запуске вашего скрипта.

    Окно может содержать текст-уведомление, можно сделать так, что пользователь не сможет его закрыть и свернуть (но сможет отодвинуть окно, чтобы продолжить работу).

    По выполнении скрипта окно закрывается.

    Если необходима помощь, как реализовать подобный сценарий, сообщите.

    В вашем сценарии есть 2 минуса:

    1. вы не можете точно сказать, когда будет выполнен скрипт для включенного ПК;

    2. в случае, если пользователю нужно будет быстро выключить ПК, он не сможет это сделать 

    (т.к. будет работать ваш скрипт).


    • Изменено Mikhail_sa 29 ноября 2019 г. 12:29
    29 ноября 2019 г. 0:41
  • Можно просто вывести окно на ПК пользователя при запуске вашего скрипта.

    Зачем выводить окно, когда скрипт это и есть само по себе окно с сообщением в терминале cmd.exe где по алгоритму сначала выводим echo сообщение что через 20 секунд начнется работа скрипта и если не хотите ждать то просто закройте это обычное окно нажав как обычно на крестик.

    Окно может содержать текст-уведомление, можно сделать так, что пользователь не сможет его закрыть и свернуть (но сможет отодвинуть окно, чтобы продолжить работу). По выполнении скрипта окно закрывается.

    Не нужно делать никаких дополнительных окон, и тем более не давать пользователю закрыть это окно. Зачем?? Ведь скрипт срабатывает когда пользователь выключает или перезагружает компьютер. Для чего пользователю продолжать работу? Вы точно поняли смысл моей задачи, чтобы предлагать такое?

    В вашем сценарии есть 2 минуса:

    1. вы не можете точно сказать, когда будет выполнен скрипт для включенного ПК;

    2. в случае, если пользователю нужно будет быстро выключить ПК, он не сможет это сделать 

    (т.к. будет работать ваш скрипт).

    В моем сценарии есть только один минус, я не могу получить точное состояние системы (перезагрузка либо выключение), когда происходит сценарий User logOff но в целом это не критично.

    1. Мне абсолютно все равно сколько будет выполняться скрипт. Это срабатывает когда пользователю уже не нужно работать за компьютером и он его выключает.

    2. Если пользователю нужно будет быстро выключить или перезагрузить ПК, он в любой момент работы скрипта может его закрыть нажав на крестик. Именно для это я включаю групповую политику отображения работы скриптов при событии User LogOFF 
    Конфигурация пользователя \ Административные шаблоны \ Система \ Сценарии - Отображает команды сценариев выхода во время их выполнения (Включить)

    Зачем вы даете советы или что-то предлагаете, не ознакомившись с описанием задачи в первом посте?

    1 декабря 2019 г. 18:41
  • Есть ещё один недостаток вашего подхода (актуальный для большой инфраструктуры): администратор вышестоящего OU домена может распространить свой скрипт, выполняемый при завершении работы ПК. Предположим, данный администратор не протестировал свой скрипт и он выполняется бесконечно. В таком случае: 1) ваши пользователи при выключении ПК не смогут дождаться завершения работы системы; 2) ваш скрипт проверки на вирусы не отработает.

    Задачу антивирусной проверки лучше решать с помощью, например, продуктов Kaspersky. Если возможности нет, обязательно необходимо уведомление пользователей о проводимой работе (по почте, через линейных руководителей). Вам, может быть, и всё равно, сколько будет выполняться скрипт, пользователю - не всё равно. И в подобной ситуации пользователь важнее.

    Я бы на вашем месте скрыл окно выполнения скрипта (вывел окно-заставку с надписью "Выполняется проверка, не выключайте ПК", которую бы пользователь не мог бы закрыть), запланировал запуск задачи в рабочее (обеденное) время и уведомил (через руководство) сотрудников о проводимой работе. Тогда и к вам вопросов будет меньше, и задача антивирусной проверки будет решена (т.е. вы будете контролировать запуск задачи, а не пользователь посредством выключения своего ПК). С помощью групповых политик запустить скрипт в определённое время можно (один из вариантов - создание задачи в планировщике), но ИМХО подобные задачи лучше решать с помощью SCCM.

    2 декабря 2019 г. 7:40
  • А кто вообще распространяет какие либо скрипты, предварительно не протестировав их работу?

    Это не недостаток, а глупость админов которые внедряют что попало без предварительного тестирования. Мой скрипт протестирован и недостатков в нём нет.

    1. Даже если эта глупость свершится, пользователь всегда может закрыть окно скрипта вручную и система продолжит свое выключение или перезагрузку.  Зачем вы опять пишите о том чего не знаете? Спор ради спора?

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

    Задача антивирусной проверки решается именно через Kaspersky Security Center который по ночному заданию проверяет компьютеры, которые люди не выключают ночью. А днем я пользователей в отличии от вашего решения, вообще не трогаю и не мешаю им работать, ни в обед, ни в любое другое время. И мои пользователи безумно счастливы что в дневное время или обед, компьютер не превращается в овощ от нагрузки при сканировании дисков. Мое решение именно ДЛЯ удобства пользователей, чтобы всё обслуживание начиналось когда пользователь нажал кнопку - завершить работу Windows и счастливый пошел домой, а что уже делает компьютер дальше абсолютно не его дело.

    На моем месте я сам знаю как лучше, и мои пользователи рады что их компьютер не тормозит в любое время когда они физически на работе. А вы делайте как хотите.

    2 декабря 2019 г. 10:44