Как принудительно обработать удаленную групповую политику

Опубликовано: 11 Апреля, 2023

Обновление параметров групповой политики Microsoft Windows на локальном компьютере не так сложно с помощью такого инструмента, как Gpupdate, но обновление этих политик на компьютерах удаленного домена невозможно из любой консоли управления Microsoft (MMC) по умолчанию или с помощью любого доступного инструмента Microsoft, поэтому далеко. В этой статье мы покажем некоторые приемы, скрипты и бесплатные инструменты, которые сделают эту задачу возможной и даже легкой для сетевого администратора.


Введение


Большинству администраторов известна проблема принудительной обработки групповой политики (GP) на удаленных компьютерах. После настройки какой-либо важной политики иногда хотелось бы, чтобы обработка GP происходила сразу на клиентских компьютерах. Проблема в том, что по умолчанию так называемая фоновая обработка происходит «только» каждые 90–120 минут (в случайном порядке) — если мы хотим, чтобы обновления происходили сразу, мы сами по себе. Конечно, есть причина, по которой политики не обновляются каждые 5 минут или «в режиме реального времени». В большинстве сред нагрузка на контроллеры домена и сеть была бы слишком велика. Но, если очень важную настройку безопасности в какой-то момент нужно «сразу» протолкнуть большому количеству клиентов, неплохо быть готовым к такой ситуации.


В основном мы хотим, чтобы администратор (администратор) из центрального места (рабочая станция администратора) мог обновлять политики на компьютере 1, компьютере 2 и/или компьютере 3, а также пользовательские политики для пользователей A, B и C. всякий раз, когда админ сочтет это необходимым. См. рисунок 1.


Изображение 25078
Рисунок 1: Сценарий


У нас есть замечательный инструмент Gpupdate, встроенный в Microsoft Windows XP и новее, и у нас был Secedit в системах Windows 2000, но, к сожалению, в отличие от команды Gpresult, и Gpupdate, и Secedit обрабатывают только локальные обновления. Конечно, если у нас уже настроена система развертывания, такая как Microsoft Systems Management Server (SMS), мы могли бы использовать эту систему для распространения небольшого скрипта, который выполняет необходимую команду для группы пользователей или компьютеров.


Если у нас нет такой системы в сети, мы должны попытаться проявить творческий подход — потому что альтернативой является вход на все компьютеры с помощью таких инструментов, как удаленный помощник, или отправка электронной почты всем пользователям для выполнения команды Gpupdate… Итак., давайте тогда попробуем проявить творческий подход.


вопросы


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


Проблемы с брандмауэром:
Как и при любом другом обмене данными, который инициируется из сети, пакеты, пытающиеся обновить параметры политики на удаленных компьютерах, не будут работать, если локальный брандмауэр удаленных компьютеров (например, встроенный в операционную систему Windows, начиная с Windows XP с пакетом обновления 2 и выше) не настроен для разрешения такого входящего трафика (из данной подсети, IP-адреса или чего-то еще). Встроенный брандмауэр Windows должен быть настроен так, чтобы разрешать входящий трафик, который нам нужен, с помощью объекта групповой политики (GPO), поэтому по иронии судьбы такая политика является единственной, которую мы определенно не можем заставить использовать удаленные компьютеры с включенным брандмауэром.


Параметры политики, которые необходимо включить для всех методов, упомянутых в этой статье, следующие:



Другие устройства брандмауэра между центральным компьютером и удаленными компьютерами должны быть настроены в соответствии с указанными выше параметрами (см. текст справки по упомянутой политике в GPEDIT.MSC для информации о портах и т. д.).


Права администратора:
Пользователь, инициирующий процессы на удаленных компьютерах, должен быть локальным администратором этих компьютеров, иначе он просто не будет работать должным образом.


После того, как об этом позаботятся, давайте посмотрим на доступные нам бесплатные методы.


Скрипты


Скрипты бесплатны и широко распространены среди ИТ-специалистов в Интернете — на самом деле это «открытый исходный код» в лучшем виде. Microsoft предоставила нам некоторые встроенные возможности для расширения возможностей наших операционных систем (ОС) и сред — в этой статье мы расскажем, как эти возможности можно использовать для удаленного обновления GP.


Gpupdate и уходит в отставку


Прежде всего, мы должны упомянуть Gpupdate и Secedit, без этих инструментов все это было бы невозможно. Упомянутые здесь сценарии и инструменты предполагают, что один из инструментов существует на удаленном клиенте, в зависимости от версии ОС. Как упоминалось выше, Secedit поставлялся с Windows 2000, а Gpupdate заменил Windows XP и более поздние версии, он даже пережил путешествие в Longhorn, как выглядит сейчас. В следующих сценариях я сосредоточусь на Gpupdate — мы могли бы проверить версию ОС перед вызовом Gpupdate или Secedit, но это можно добавить позже без особых усилий.


Gpupdate.exe по умолчанию находится в папке «%windir%system32», поэтому нам не нужен абсолютный путь к его расположению на удаленной рабочей станции. Инструмент можно вызвать с помощью нескольких различных переключателей:



В сценариях HTML-приложения «сделай сам» (HTA) и инструментария управления Windows (WMI) мы сосредоточимся на запуске Gpupdate без каких-либо переключателей или с «/Taget:Computer» (для обновления только политик, связанных с компьютером) или «/ Target:User» (для обновления только политик, связанных с пользователем). Другие параметры могут быть включены с некоторой дополнительной работой, но действительно ли мы будем использовать «/Logoff» или «/Boot»? Это будет означать, что при необходимости пользователи могут выйти из системы (установка программного обеспечения, перенаправление папок и т. д.) или даже перезагрузить компьютер, пока пользователь работает. Это действительно то, чего мы хотим? В любом случае, мы могли бы также использовать для этой цели такие инструменты, как Shutdown.exe, но я предполагаю, что он не будет популярен там (у пользователей, которых вы знаете).


PsExec


Первый метод, который я упомяну, очень прост в реализации и почти не требует навыков написания сценариев. Зачем изобретать то, что уже изобретено, верно? PsExec разработан Марком Руссиновичем, бывшим владельцем Sysinternals, который был приобретен Microsoft в июле 2006 года. В настоящее время он доступен в версии 1.73, и его можно загрузить с сайта Microsoft Technet здесь.


PsExec — это «рай», когда речь идет об удаленном выполнении, прежде всего потому, что он не требует установки каких-либо агентов на удаленных компьютерах. Вам нужно указать имя компьютера и команду, которая должна быть выполнена как переключатели в командной строке — вот и все! За кулисами служба устанавливается «специально» удаленно и снова удаляется при выполнении команды.


Небольшой совет: поместите файл PsExec.exe в каталог «%windir%», потому что тогда нам не нужно будет указывать полный путь к этому файлу при его запуске из командной строки и т. д.


Чтобы обновить групповые политики на удаленном компьютере «Имя компьютера», нам нужно написать следующую команду: «PsExec \Имя_компьютера Gpupdate». Пользователь, вошедший на удаленный компьютер, ничего не увидит, но в фоновом режиме Gpupdate «обновит» политики пользователя и компьютера и применит все отсутствующие настройки. Вы могли бы подумать, что PsExec должен работать с переключателем «-i» (интерактивный) для обновления конкретных пользовательских политик удаленных пользователей, но тестирование показывает, что это не так.


ГИБКАЯ КОМАНДА


Что ж, вышеупомянутый метод обновляет политики только для одного пользователя/компьютера — как насчет обновления всей организационной единицы (OU) с помощью совместного использования PsExec и Gpupdate? Для этой цели я создал «демонстрационный» сценарий, чтобы показать некоторые возможности, которые мы получаем при использовании некоторых «творческих» сценариев. Скрипт называется FLEX COMMAND и его можно скачать здесь. При открытии файла HTA с помощью текстового редактора, такого как «Блокнот», код раскрывается — никакой скрытой магии или чего-то еще.


Когда FLEX COMMAND запускается, она связывается с доменом Active Directory (AD) компьютера, на котором она выполняется. Следовательно, он должен выполняться из члена домена — если нет, то, конечно, никакие подразделения не могут быть найдены.


Выберите OU, должны ли обрабатываться компьютерные объекты в подчиненных OU, и должен ли инструмент обрабатывать только «живые» машины (отвечающие на запросы WMI). Последнее, что нужно сделать, это вставить командную строку, которую мы хотим выполнить на локальном компьютере для каждого объекта компьютера, найденного в выбранной OU. Текстовая строка «{C}» должна быть включена; оно будет заменено именем компьютера, когда сценарий будет перебирать объекты компьютера.


Изображение 25079
Рисунок 2: FLEX COMMAND в действии


Допустим, в ОП «Мои компьютеры» всего 3 компьютера: Компьютер1, Компьютер2 и Компьютер3. Введенная нами команда «psexec \{C} gpupdate» преобразуется в следующие 3 команды: «psexec \computer1 gpupdate», «psexec \computer2 gpupdate», «psexec \computer3 gpupdate» — все команды будут выполняться последовательно (если компьютеры живы) и удаленные политики должны быть обновлены.


Инструмент можно модифицировать для получения компьютеров из файла (txt, csv, xls и т. д.), базы данных, определенной группы безопасности в AD, ручного выбора из списка или любой другой необходимости. То, как сценарий выполняет процессы/команды, также может быть изменен, но этот демонстрационный сценарий в основном предназначен для демонстрации возможностей, которые у нас есть.


Сценарий предоставляется бесплатно «как есть», чтобы вы могли тестировать, использовать и модифицировать его по своему усмотрению. Подробнее здесь.


Инструментарий управления Windows (WMI)


Хорошо, PsExec хорош, но есть ли у нас метод «сделай сам», чтобы я мог настроить решение под свою среду? Да, на самом деле мы делаем! WMI чрезвычайно мощный и довольно простой в использовании после нескольких часов изучения. Благодаря WMI, прирученному сценарию брандмауэра и административным правам в среде Windows возможно почти все — даже удаленное отключение, перезагрузка или выполнение команд.


Я создал еще один скрипт для демонстрационных целей, который называется OU GPUPDATE. Этот HTA-скрипт содержит несколько различных техник «под капотом» — на самом деле это просто небольшая модификация FLEX COMMAND. Прежде всего, он просматривает структуру OU в AD (верхний выпадающий список), он дает пользователю возможность обращаться к объектам-компьютерам и в суб-OU, чтобы запустить Gpupdate с «/Target:User» или «/Target:Computer». ” или без каких-либо переключателей. По умолчанию будут поражены только «живые» компьютеры (отвечающие на запросы WMI).


Изображение 25080
Рисунок 3. Выберите, что нужно обновить: настройки пользователя, настройки компьютера или и то, и другое


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


Удаленное выполнение сценариев


Помимо WMI, у нас есть возможность использовать «простые» удаленные сценарии (VBScript). Это должно быть включено путем установки одного значения в части HKLM баз данных реестра задействованных компьютеров, механизмы сценариев должны быть включены для «удаленного выполнения сценариев», и с этого момента все остальное довольно просто. Процедура состоит в том, чтобы скопировать файл сценария на удаленный хост (этот сценарий должен выполнять Gpupdate по мере необходимости), а затем отправить команду VBScript, которая удаленно выполняет файл сценария.


Джереми Московиц, Microsoft Group Policy MVP, кратко упоминает эту процедуру в своей книге «Групповая политика, профили и IntelliMirror для Windows 2003, Windows 2000 и Windows XP», см. его веб-сайт.


РГПРЕФРЕШ


RGPREFRESH — это инструмент, разработанный Дарреном Мар-Элия. Даррен является самым ценным специалистом по групповым политикам Microsoft (MVP), см. его веб-сайт. Его инструмент использует WMI за кулисами и выполняет Secedit или Gpupdate по мере необходимости на удаленном хосте с переключателями командной строки, выбранными пользователем. Эти переключатели дают вам те же возможности, как если бы вы использовали инструмент локально.


Инструмент Даррена одновременно обрабатывает одну машину, но в сочетании с таким инструментом, как FLEX COMMAND (в качестве «оболочки»), инструмент может за несколько кликов обработать всю организационную единицу компьютера… И RGPREFRESH, и PsExec также можно комбинировать с DSQUERY, ДЛЯ и другие утилиты командной строки для одновременного выполнения более чем на одном хосте.


Изображение 25081
Рисунок 4: Параметры RGPREFRESH


Инструмент можно бесплатно загрузить с этой веб-страницы.


Спецоперации


Special Operations Software, Specops, является международным поставщиком программного обеспечения, предлагающим продукты для управления, улучшающие технологии на основе Active Directory и групповой политики. Компания выпустила собственное решение для удаленного обновления политик, и самое приятное то, что его можно использовать совершенно бесплатно. Текущая версия Specops Gpupdate — 1.0.2.13 (25 октября 2006 г.), утилиту можно скачать здесь. Этот инструмент не только обеспечивает функциональность, которую мы разработали в приведенных выше сценариях, но также добавляет некоторые дополнительные функции управления. Давайте посмотрим на эту замечательную утилиту…


Установка Specops Gpupdate


Установить приложение MSI очень просто; все, что для этого требуется, — это MMC Active Directory Users & Computers (ADUC) и Microsoft.NET Framework версии 2.0.


Изображение 25082
Рис. 5. Процесс установки такой же простой, как и установка большинства пакетов MSI (далее, далее, далее)


После установки файла MSI в графическом интерфейсе ничего не меняется, только «Установка и удаление программ» сообщает нам, что Specops установлен. Так что нам предстоит выполнить дополнительное задание, чтобы магия появилась…


Пользователи и компьютеры Active Directory расширены


При первой установке Specops Gpupdate в лесу AD необходимо выполнить специальную команду:



Это не обновление схемы, хотя для его запуска вы должны быть администратором предприятия. Это обновление полностью обратимо, просто запустите его снова с переключателем «/remove». Что он делает, так это регистрирует так называемые «спецификаторы отображения», чтобы расширить представление из ADUC.


При щелчке правой кнопкой мыши по подразделению или компьютерному объекту добавляются четыре новых параметра: Gpupdate, Restart, Shut down и Start. Можно выбрать несколько компьютеров и подразделений, удерживая нажатой клавишу [Ctrl] и щелкая левой кнопкой мыши по нужным объектам.


Изображение 25083
Рис. 6. Расширенный ADUC MMC


Если вам, как и мне, интересно, применимы ли изменения также к компьютерам, не являющимся DC (или управляющим компьютерам), ответ: Да! После установки Windows Server 2003 Admin Pack Service Pack 1 Administration Tools Pack на клиенте Windows XP Professional,.NET Framework 2.0 и Specops Gpupdate консоль управления выглядела так же хорошо, как и на контроллере домена, и имела те же доступные функции.


Опция Gpupdate


Первый вариант, который у нас есть, — удаленно выполнить команду Gpupdate на выбранных компьютерах. После выбора Gpupdate мы должны подтвердить выбор, см. рисунок 7, и выбрать, хотим ли мы использовать опцию принудительного выполнения.


Изображение 25084
Рисунок 7


После нажатия кнопки «ОК» отображается динамический график, см. рис. 8, и отчет о ходе выполнения обновления.


Изображение 25085
Рисунок 8


Вариант перезапуска и выключения


Следующие две опции, «Перезапуск» и «Завершение работы», — это функции управления, которые «приятно иметь» прямо там, где они нам нужны, в ADUC. Мы можем принудительно перезапустить или завершить работу, указать количество секунд, в течение которых пользователь должен закрыть все открытые приложения, и отправить пользователю индивидуальное сообщение. Это не так сложно сделать в сценарии с помощью WMI или отправки Shutdown.exe с соответствующими ключами, но с Specops Gpupdate мы получаем эту функциональность бесплатно, без дополнительной работы.


Изображение 25086
Рисунок 9: Диалоговое окно подтверждения перезапуска


Вариант «Пуск»


Последняя из четырех опций, называемая «Пуск», на самом деле представляет собой функцию пробуждения по локальной сети (WOL), встроенную в ADUC. При выборе и подтверждении этого, см. рис. 10, так называемые пакеты Magic отправляются на MAC-адрес клиентов, чтобы заставить их загрузиться. Разумеется, WOL должен поддерживаться BIOS компьютеров. Specops Gpupdate взаимодействует с DHCP-серверами Microsoft на предприятии, чтобы найти информацию, необходимую для выполнения этого процесса, поэтому пробуждение DHCP-клиентов возможно только в сетевых средах с развернутыми DHCP-серверами Microsoft.


Изображение 25087
Рисунок 10: Подтвердите запуск удаленных компьютеров с поддержкой WOL


Кстати, скриптинг WOL на самом деле тоже возможен, но показать, как это сделать, выходит далеко за рамки этой статьи.


Вывод


Мы рассмотрели несколько различных способов принудительной удаленной обработки групповой политики. Какой метод считать лучшим, зависит от среды. Лично мне нравится писать сценарии, но зачем усердно работать над тем, что уже создали другие люди? Единственные два ответа, которые я могу придумать, это «обучение на практике» и «индивидуальная настройка». Сценарии развивают наши навыки как ИТ-специалистов и позволяют настроить решение так, чтобы оно идеально соответствовало среде.


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