Как узнать GUID объекта групповой политики
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами говори про WMI фильтрацию GPO. Сегодня мы продолжим изучение объектов групповой политики и научимся у них определять GUID и обратно по GUID найти нужный нам GPO объект. Я опишу ситуации при которых вы, это сможете применять, более тонко управлять своей доменной инфраструктурой и локализовывать проблемы с отработкой политик на конечные объекты.
Описание ситуации
Когда мы говорим про инфраструктуру Active Directory, то у нас невольно сразу вспоминается понятие групповой политики, и это не удивительно, так как в AD, это одна из фишек централизованного управления. GPO штука отличная, но и с ней могут быть сложности, например, она может не применяться, и как это лечится я показывал. Еще бывает ошибка Ошибка при обработке групповой политики с кодом 1054. Но применимо к нашей задаче, можно отнести ошибку в журналах Windows с кодом 1058, которая звучит:
a) Ошибка разрешения имен или проблемы сетевого подключения к текущему контроллеру домена.
b) Запаздывание репликации Active Directory (созданный на другом контроллере домена файл еще не реплицирован на текущий контроллер домена).
c) Отключен клиент распределенной файловой системы (DFS).
Из ошибки видно, что некая политика, которая имеет GUID E26B087E-2CF3-40C9-8910-66E48A1E53C5, не смогла применится для определенного пользователя. Сомневаюсь, что кто-то знает по номеру GUID свои объекты GPO. Вот для таких случаев, вы должны уметь их определять у объектов групповой политики, и находить по ним нужную GPO, это можно сравнить, когда мы узнавали SID пользователя и по SID значению находили пользователя.
Методы получения GUID у объекта GPO
GUID (Globally Unique Identifier) - это уникальный идентификатор, который не повторяетcя нигде, по сути это 128-битный номер, или как говорит википедия (2128 или 3,4028×1038 "https://ru.wikipedia.org/wiki/GUID").
Самой простой метод определить GUID идентификатор, это открыть редактор групповой политики. Найти в контейнере "Объекты групповой политики" нужную вам политику. Выбрать ее и перейти в ней на вкладку "Сведения". Там вы увидите время создания, модификации и уникальный код, это и есть GUID, в моем примере у политики "Управление UIPI" код {49DF37C4-D9AF-48D0-85AA-96E91B6CC13A}
Если приступить к редактированию политики и зайти в ее свойства, то вам в новом окне, на вкладке "Общие" будет показано уникальное имя, состоящее из GUID {49DF37C4-D9AF-48D0-85AA-96E91B6CC13A}, у вас будет свой.
Далее можно воспользоваться поиском в оснастке управления групповой политикой, для этого щелкните правым кликом по корню вашего домена и из контекстного меню выберите пункт "Найти"
В поисковой форме, в пункту "Элемент поиска" выберите значение "имя объекта групповой политики", в условии равно или содержит, в значении указываем нужное слово или имя. После чего нажимаем добавить.
После чего нажимаем кнопку "Найти" в результате чего у вас будут результаты поиска с именами объектов групповой политики, где вы сможете увидеть код GUID.
Еще одним из лучших и универсальных методом просмотра информации по объектам GPO, является оболочка PowerShell с ее огромным количеством командлетов. Как запускать PowerShell от имени администратора я уже писал, нам тут поможет командлет Get-GPO, про него можете почитать по ссылке:
первым делом мы импортируем модуль групповой политики
Для того, чтобы вывести все GPO введите
Вы получите все объекты, где сможете увидеть ID, который соответствует GUID.
Так как политик может быть огромное количество, то вы можете отфильтровать по имени, например вот так:
На выходе получите одну конкретную запись
Если хотите сделать красивый вывод в отдельном окне, то добавьте ключ Out-GridView
на выходе будет удобная форма в отдельном графическом окне, где первым столбцом будет ID с GUID значением.
Как по GUID найти GPO
Напоминаю, что по умолчанию все объекты групповых политик располагаются на контроллерах домена, по пути C:\Windows\SYSVOL\sysvol\имя вашего домена\Policies. В данной папке все политики как раз и будут иметь в имени значение GUID.
Теперь у нас задача иная, мы зная GUID политики, нам нужно вычислить ее имя, чтобы понять, что за GPO могла не отработать или наоборот, что GPO прилетела и могла, что-то сломать. Как обычно методов несколько, и вы сами будите использовать те, что вам более приемлемы.
- Первым методом лично для меня я могу выделить все то же PowerShell. Напоминаю, что у меня есть ID (GUID), который я получил от политики "Управление UIPI" {49DF37C4-D9AF-48D0-85AA-96E91B6CC13A}. Предположим, что мне нужно вычислить именно его. В оболочке введите команду:
На выходе вы получите вывод, где нас будет интересовать поле DisplayName, в котором будет содержаться имя объекта групповой политики:
DisplayName : Управление UIPI
DomainName : root.pyatilistnik.org
Owner : ROOT\Администраторы домена
Id : 49df37c4-d9af-48d0-85aa-96e91b6cc1
GpoStatus : AllSettingsEnabled
Description :
CreationTime : 16.05.2019 13:58:23
ModificationTime : 16.05.2019 15:31:07
UserVersion : AD Version: 0, SysVol Version: 0
ComputerVersion : AD Version: 9, SysVol Version: 9
WmiFilter :
- Второй метод, это использование оснастки "Active Directory - Пользователи и компьютеры". Выберите там ваш домен и нажмите поиск.
В поле найти, выберите "Пользовательский поиск", далее переходим на вкладку "Дополнительно" и вводим вот такой LDAP запрос:
Так же через вкладку "Вид", добавьте столбец "Выводимое имя". Именно в нем вы увидите имя политики.
- Третьим методом получения имени объекта групповой политики по ID (GUID) значению, это использование поиска в самой оснастке управления групповой политикой. В поисковой форме в поле "Элемент поиска" установите значение код GUID, в условии "Равно" и в значении сам код. После чего нажмите добавить.
После того как условие поиска сформировано, можно нажимать кнопку "Найти". В результате чего вы вычислите искомое GPO.
- Еще можно воспользоваться конструкцией для командной строки:
На выходе вы увидите GUID GPO и его имя. Вот такие вот не хитрые методы получения GUID у GPO и обратно. Так же можете воспользоваться вот таким скриптом:
# Создаем папку в которую положим наш отчет
if ($results1 = "False") {
New-Item C:\GPOReports -type directory -Force
}
else {
}
$results2 = Test-Path C:\GPOReports\GPOReportsGUID.html
# Создание файла
if ($results = "False") {
New-Item C:\GPOReports\GPOReportsGUID.html -type file -force
}
else {
}
Import-Module -Name grouppolicy
$guidgpo = Read-Host "Enter the GUID of the GPO (Do Not Include Brackets {}"
Get-GPOReport -Domain ТУТ Пишем свой домен -Server Имя вашего сервера DC -GUID $guidgpo -ReportType HTML -Path C:\GPOReports\GPOReportsGUID.html
# Запуск нашего файла отчета в браузере
Invoke-Item C:\GPOReports\GPOReportsGUID.html
На первом шаге вводите без {} номер вашего GUID и нажимаете Enter
В результате поисков у вас откроется отчет с вашей политикой.
С вами был Иван Семин, автора и создатель IT портала Pyatilistnik.org.