Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о генерации и разборе отчета об объекте групповой политики при помощи Windows PowerShell.
Создаем отчет
Я думаю, каждый, кто работал сетевым администратором, или даже сотрудником техподдержки, сталкивался с ситуацией, требующей анализа применения групповой политики. Порой возникают довольно странные ситуации, когда то, что должно применяться – не применяется, а то, что не должно – применяется. Стандартная утилита для анализа применения групповой политики – gpresult. Ее синтаксис может показаться довольно запутанным, однако я нашел нужную мне команду:
gpresult /r
Утилита выводит информацию в консоль Windows PowerShell, что не дает нам достаточно возможностей для диагностики – для работы с информацией приходится прокручивать экран туда и обратно.
Я могу передать информацию командлету Out-GridView.
gpresult /r | Out-GridView
Несмотря на то, что вывод команды gpresult – обычный текст, это не мешает нам использовать командлет Out-GridView для разбора результатов ее выполнения.
Путем ввода символов в строку фильтра, я могу фильтровать содержимое текстового поля. Это привносит некоторые дополнительные возможности для обработки информации.
Более удобный способ – XML
Использование командлета Get-GPOReport (входящего в модуль GroupPolicy комплекта RSAT), предоставляет возможность еще более гибкого подхода к разбору настроек объекта групповой политики. Этот командлет может создавать два вида отчетов – HTML и XML. Также он обладает параметром –path, при помощи которого можно указать путь для сохранения файла отчета. Таким образом, для того, чтобы создать отчет об объекте групповой политики BackupOnLogOff, присутствующем в моем домене, я использую следующую команду:
Get-GPOReport -Name backuponlogoff -ReportType html -Path c:\fso\backup.html
Я могу открыть созданный отчет в Internet Explorer.
Нужно сказать, отчет в формате HTML по своей пригодности для дальнейшего использования ненамного превышает результаты работы командлета Out-GridView.
Если я не укажу параметр пути, результаты работы командлета Get-GPOReport будут выведены на консоль. Однако, не могу сказать, что мне требуется содержимое HTML-файла на консоли. То же самое касается и формата XML. Но, что если я сохраню результаты работы командлета в переменной, определенной как XML-документ?
[xml]$xml = Get-GPOReport -Name backuponlogoff -ReportType xml
Ну что ж, это сработало.
Заметка: При исследовании документа XML не забывайте об использовании . Это значительно снижает объем вводимого текста.
Свойство, с которого я хочу начать – это DocumentElement. Запросив это свойство я получил несколько объектов, которые хотел бы исследовать.
13:01 C:\> $xml.DocumentElement
xsd : http: //www.w3.org/2001/XMLSchema
xsi : http: //www.w3.org/2001/XMLSchema-instance
xmlns : http: //www.microsoft.com/GroupPolicy/Settings
Identifier : Identifier
Name : BackupOnLogOff
IncludeComments : true
CreatedTime : 2012-02-22T19:19:53
ModifiedTime : 2012-02-22T19:19:53
ReadTime : 2013-02-05T18:01:33.4004324Z
SecurityDescriptor : SecurityDescriptor
FilterDataAvailable : true
Computer : Computer
User : User
LinksTo : LinksTo
Для определения, активен ли этот объект групповой политики для разделов User и Computer, я просмотрю значение свойства Enabled для этих объектов.
13:01 C:\> $xml.DocumentElement.Computer
VersionDirectory VersionSysvol Enabled
—————- ————- ——-
0 0 true
На следующем рисунке приведены используемые команды и их вывод.
Если мне нужно получить владельца, я просмотрю свойства объекта SecurityDescriptor.
13:01 C:\> $xml.DocumentElement.SecurityDescriptor.Owner
xmlns SID Name
—— — —-
http: //www.microsoft.com/… SID Name
13:01 C:\> $xml.DocumentElement.SecurityDescriptor.Owner.Name
xmlns #text
—— ——
http: //www.microsoft.com/GroupPolicy/Types IAMMRED\Domain Admins
Просмотрев свойства объекта LinksTo, я могу определить, c какими объектами в структуре Active Directory связана эта политика.
13:02 C:\> $xml.DocumentElement.LinksTo
SOMName SOMPath Enabled NoOverride
——- ——- ——- ———-
Charlotte iammred.net/Charl… true false
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell