Утилита командной строки GPResult.exe используется для получения результирующего набора групповых политик (Resultant Set of Policy, RSOP), которые применяются к пользователю и/или компьютеру в домене Active Directory. Gpresult позволяет вывести список доменных политик (GPO), которые применяются на компьютер и пользователя, настройки политик и ошибки обработки. Это наиболее часто используемый инструмент администратора для анализа настроек и диагностики групповых политик в Windows.
В этой статье мы рассмотрим, как использовать команду GPResult для диагностики и анализа настроек групповых политик, применяющихся к Windows в домене Active Directory.
Использование команды GPResult в Windows
Команда GPResult выполняется на компьютере, на котором нужно проверить применение групповых политик. Синтаксис GPResult:
GPRESULT [/S <система> [/U <пользователь> [/P <пароль>]]] [/SCOPE <область>] [/USER <имя_конечного_пользователя>] [/R | /V | /Z] [(/X | /H) <имя_файла> [/F]]
Чтобы получить подробную информацию о групповых политиках, которые применяются к данном объекту AD (пользователю и компьютеру), и других параметрах, относящихся к инфраструктуре GPO (т.е. результирующие настройки политик GPO – RsoP), выполните команду:
Gpresult /r
Результаты выполнения команды разделены на 2 секции:
- COMPUTER SETTINGS (Конфигурация компьютера) – раздел содержит информацию об объектах GPO, действующих на компьютер в Active Directory;
- USER SETTINGS – раздел с политиками пользователя (политики, действующие на учетную запись пользователя в AD).
Вкратце пробежимся по основным параметрам/разделам, которые нас могут заинтересовать в выводе GPResult:
- Site Name (Имя сайта:)– имя сайта AD, в котором находится компьютер;
- CN – полное каноническое пользователя/ компьютера, для которого были сгенерированы данные RSoP;
- Last time Group Policy was applied (Последнее применение групповой политики)– время, когда последний раз применялись (обновились) настройки GPO;
- Group Policy was applied from (Групповая политика была применена с)– контроллер домена, с которого была загружена последняя версия GPO;
- Domain Name и Domain Type (Имя домена, тип домена)– имя и версия схемы домена Active Directory;
- Applied Group Policy Objects (Примененные объекты групповой политики) – списки действующих объектов групповых политик;
- The following GPOs were not applied because they were filtered out (Следующие политики GPO не были применены, так как они отфильтрованы)— не примененные (отфильтрованные) GPO;
- The user/computer is a part of the following security groups (Пользователь/компьютер является членом следующих групп безопасности) – список доменных групп безопасности, в которых состоит пользователь/пользователь.
В нашем примере видно, что на объект пользователя действуют 4 групповые доменные политики.
- Default Domain Policy;
- Enable Windows Firewall;
- DNS Suffix Search List;
- Disable Cached Credentials.
Также в отчете будет информацию о локальных параметрах политик, настроенных через локальный редактор GPO (gpedit.msc).
С помощью опции /scope можно вывести только политики пользователя или компьютера:
gpresult /r /scope:user
или только примененные политики компьютера:
gpresult /r /scope:computer
gpresult /r /scope:computer
ERROR: Access Denied.
Для удобства анализа данных RSOP, вы можете перенаправить результаты Gpresult в буфер обмена:
Gpresult /r |clip
или текстовый файл:
Gpresult /r > c:\gpresult.txt
Чтобы вывести сверхподробную информацию RSOP, нужно добавить ключ /z.
Gpresult /r /z
Например, на скриншоте показаны настройки политики паролей в домене, которые применяются к компьютеру.
GPResult: экспорт данных RSOP в HTML отчет
Утилита GPResult позволяет сгенерировать HTML-отчет по примененным результирующим политикам (доступно в Windows 7 и выше). Такой отчет содержит подробную информацию обо всех параметрах Windows, которые задаются групповыми политиками и именами GPO, которые внесли изменения. Этот отчет по структуре напоминает вкладку Settings в консоли управления доменными групповыми политиками (
gpmc.msc
). Сгенерировать HTML отчет GPResult можно с помощью команды:
GPResult /h c:\gp-report\report.html /f
%WINDIR%\system32
.Чтобы сгенерировать отчет и автоматически открыть его в браузере, выполните команду:
GPResult /h GPResult.html & GPResult.html
В HTML отчете gpresult содержится довольно много полезной информации: видны ошибки применения GPO, время применения конкретных политик (в мс.) и CSE (в разделе Computer Details -> Component Status). Это удобно, когда нужно понять почему групповые политики (GPP/GPO) применяются на компьютере слишком долго.
Например, на скриншоте выше видно, что политика Enforce password history с настройками 24 passwords remember применена политикой Default Domain Policy (столбец Winning GPO).
HTML отчет позволяет представить результирующий набор GPO компьютера в удобном графическом виде.
Получение отчета по политикам GPResult с удаленного компьютера
GPResult может получить информацию о результирующих политик с удаленного компьютера.
GPResult /s wks22123 /r /user a.ivanov
В команде gpresult можно указать имя и пароль для подключения к удаленному компьютеру:
gpresult /R /S wks22123 /scope user /U winitpro\kbuldogov /P P@$$worrd
Если вы не хотите, чтобы ваш пароль сохранялся в истории команд PowerShell, можно запросить пароль интерактивно:
gpresult /R /S wks22123 /scope user /U winitpro\kbuldogov /P
Аналогичным образом вы можете удаленно собрать данные как по пользовательским политикам, так и по политиками компьютера.
Если вы не знаете имя пользователя, под которым выполнен вход, можно узнать учетную запись на удаленном компьютере так:
qwinsta /SERVER:remotePC1
Get-GPResultantSetOfPolicy -user kbuldogov -computer corp\pc0200 -reporttype html -path c:\ps\gp_rsop_report.html
Пользователь не имеет данных RSOP
Если на компьютере включен UAC, то GPResult без повышенных привилегий выведет только параметры пользовательского раздела групповых политик. Если нужно одновременно отобразить оба раздела (USER SETTINGS и COMPUTER SETTINGS), открыть командную строку с правами администратора. Е
сли командная строка с повышенными привилегиями запущена от имени учетной записи отличной от текущего пользователя системы, утилита выдаст предупреждение INFO: The user “domain\user” does not have RSOP data (Пользователь «domain\user» не имеет данных RSOP). Это происходит потому, что GPResult пытается собрать информацию для пользователя, ее запустившего, но т.к. данный пользователь не выполнил вход (logon) в систему, информация RSOP для него отсутствует. Чтобы собрать информацию RSOP по пользователю с активной сессией, нужно указать его учетную запись:
gpresult /r /user:tn\edward
Если вы не знаете имя учтённой записи, которая залогинена на удаленном компьютере, учетную запись можно получить так:
qwinsta /SERVER:remotePC1
Также проверьте время (и часовой пояс) на клиенте. Время должно соответствовать времени на PDC (Primary Domain Controller).
Следующие политики GPO не были применены, так как они отфильтрованы
При отладке и траблшутинге применения групповых политик стоит также обращать внимание на секцию: The following GPOs were not applied because they were filtered out (Следующие политики GPO не были применены, так как они отфильтрованы). В этой секции отображается список GPO, которые по той или иной причине не применяются к этому объекту. Возможные варианты, по которым политика может не применяться:
- Filtering: Not Applied (Empty) (Фильтрация: Не применено (пусто)) – политика пустая (применять, нечего);
- Filtering: Denied (Unknown Reason) (Фильтрация: Не применено (причина неизвестна)) – скорее всего у пользователя или компьютера отсутствуют разрешения на чтение/применение этой политики. Разрешения настраиваются на вкладке Security в консоли управления доменными GPO — GPMC (Group Policy Management Console);
- Filtering: Denied (Security) (Фильтрация: Отказано (безопасность)) — в секции Apply Group Policy указан явный запрет в разрешении Apply group policy либо объект AD не входит в список групп в разделе настроек Security Filtering.
Также вы можете понять должна ли применяться GPO к organizational unit (OU) в AD на вкладке эффективных разрешений (Advanced -> Effective Access).
Оснастка результирующих политик RSoP в Windows
Изначально для диагностики применения групповых политик в Windows использовалась графическая консоль
RSOP.msc
. Эта оснастка позволяет получить настройки результирующих политик (доменных + локальных), примененных к компьютеру и пользователю в графическом виде аналогичном консоли редактора GPO. На скриншоте показа вид консоли RSOP.msc в которой видно, что настройки Windows Update на компьютере заданы доменной политикой WSUS_SERVERS.
В современных версиях Windows RSOP.msc не получится использовать для полноценного анализа примененных GPO. Она не отражает настройки, примененные через расширения групповых политик CSE (Сlient Side Extensions), таких как GPP (Group Policy Preferences), не позволяет выполнять поиск, предоставляет мало диагностической информации. В Windows 10 и 11 при запуске
rsop.msc
появилось предупреждение, что основной инструмент для диагностики применения GPO это утилита gpresult.
Starting with Vista, the Resultant Set of Policies (RSoP) report does not show all Microsoft Group Policy settings. To see the full set of Microsoft Group Policy settings applied for a computer or user, use the command-line tool gpresult.
В этой статье мы рассмотрели, как использовать утилиту GPResult для анализа результирующих групповых политик, которые применяются в Windows. Также для анализа применения GPO в домене рекомендуем использовать инструкции из статьи “Почему групповая политика не применяется к компьютеру или OU”.
10ка предупреждает что RSOP не дает полный отчет в отличие от GPResult.
Thank you all, it’s very useful
Стянуть хтмл-отчет с удаленного компа, как я понял gpresult не умеет ?
Попробуйте в качестве пути к html файлу указать UNC путь к сетевой папке (сам не пробовал)
Очень странно, а вот если я, скажем, поменяю на локальной машине параметр в политиках, то ни в GPResult, ни в RSOPe их не увижу, чем же тогда можно отследить измнения?
Есть инстурменты сравнения 2 результирующих политик, выгруженных с 2 разных машин?
Готовой утилиты не видел. Обычно, если вы разбираетесь в своих политиках, их можно простым просмотром глазами сравнить.
Есть еще вариант сравнения двух html отчетов как простых файлов. Тот же total commander это умеет. Но там явно не все найдется, если сильно разные политики.
А можно как то получить подобный отчёт при загрузке ОС? то есть формировать отчёт о примененных политиках во время загрузки ОС
Сделайте стартап скрипт с gpresult. Только я не пойму, зачем это нужно.
Столкнулся с такой проблемой, политика типа user: под одним пользователем политика не применяется (отфильтровывается), это нормально. А вот под другим пользователем в gpresult /r политика не отображается ни в примененных, ни в отклоненных. Ожидалось её увидеть или там, или там. В чем может быть причина? Попробовать gpresult с другим ключом? Пока черновая гипотеза, что несколько политик для этого пользователя пересекаются каким-то образом и происходит конфликт.
Оказалось проще: так как политика не отобразилась в gpresult значит, она просто не видится, прав нет (особенность после патчей MS)!
Добавил autehticated users с правами на чтение и всё заработало.
Все верно, нужны права на чтение, чтобы увидеть политику.
у меня вообще интересная картина. Есть пользователь домена, на некоторых компах он входит в систему нормально, а на некоторых при входе рабочий стол даже не успевает загрузиться и сразу идёт завершение сеанса.
На тех же компах где пользователь всё же входит в систему (локально или по рдп) при попытке gpresult выдаёт:
C:\Windows\system32>gpresult /r
ИНФОРМАЦИЯ: Пользователь «ххх\ххх» не имеет данных RSOP.
Удалите историю GPO из профиля пользователя в реестре: удалит ключ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy\History, выполните gpupdate, logoff и зайдите снова.
Удалил ключ. gpupdate до и после logoff показывает одно и то же. Полез в логи KD
C:\Windows\system32>gpupdate
Обновление политики…
Не удалось успешно обновить политику пользователя. Обнаружены следующие ошибки:
Ошибка при обработке групповой политики. Не удалось пройти проверку подлинности
в службе каталогов Active Directory на контроллере домена. (Ошибка при выполнени
и привязки LDAP Bind). На вкладке «Подробности» можно найти код и описание ошибк
и.
Обновление политики для компьютера успешно завершено.
Чтобы диагностировать сбой, просмотрите журнал событий или запустите GPRESULT /H
GPReport.html из командной строки для просмотра сведений о результатах группово
й политики.
C:\Windows\system32>gpresult /r
ИНФОРМАЦИЯ: Пользователь «ххх\ххх» не имеет данных RSOP.
Посмотрите подробное описание ошибки в Event Viewer.
Проверьте домен согласно статьи
_https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc727283(v=ws.10)?redirectedfrom=MSDN
Один сервер по gpresult / r в секции компьютера пишет неверный состав групп, в которых он состоит, даже вернее, не пишет группы, которые были созданны вручную, в которых он состоит. В этих группах сервер естественно есть, я проверял. Контроллеры домена windows 2008r2, полупатченный. Сервер windows 2012r2 пропатченный обновлениями безопасности. Пока гипотеза, что какого-то патча не хватает на контроллере. Как бы еще подиагностировать проблему?
Дата последнего обнвления политики в резульатах свежая?
команда
gpupdate /force
не возвращает ошибку?Да, свежая дата. Сейчас 16:38 написал, что последнее обновление в 15:03 (сегодня).
gpupdate /force не дает ошибок.
Выполнил сейчас еще раз, политики обновлены свежей датой.
Но состав групп неверный, по-прежнему.
Политик кстати при этом в зависимости от групп применяются, оказалось, правильно.
Встречал пару полностью аналогичных проблем (gpresult /r показывает неверный состав групп компьютера) в Интернете от забугорных пользователей. Но что удивительно им отвечали уважаемые люди, но проблема так и не решилась и они не написали о решении проблемы.
Еще мельком встречал про некий кэш Kerberos и что он может жить до 10 дней. Подожду 10 дней.
Так как политики по факту применяются, то острота проблемы состава групп снята.
Спасибо!
Состав групп компьютера обновляется при перезагрузке
Сервер, естественно, перезагружал, и не раз.
Вот контроллеры пока еще не перезагружал (какой-нибудь кэш держат).
А как мониторить применилась ли политика на компьютерах и на каких применилась? Образно говоря: есть объект GPO и мне надо понять, на всех ли клиентских тачках применилась политика или нет.
Встроенного удомного инструмента есть. В консоли gpmc есть функция удаленного обновления GPO — там виден статус обновлений GPO, там видно статус обновления политик — но не понятно, применилась ли конктетная GPO.
Если вам критична такая инфа, можно сделать скрипт, который удаленно опрашивает компьютеры и получает результаты из командй gpresult /r