sergey vasin

The IT blog

Используем PowerShell для генерации и парсинга отчета об объекте групповой политики – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о генерации и разборе отчета об объекте групповой политики при помощи Windows PowerShell.

Создаем отчет

Я думаю, каждый, кто работал сетевым администратором, или даже сотрудником техподдержки, сталкивался с ситуацией, требующей анализа применения групповой политики. Порой возникают довольно странные ситуации, когда то, что должно применяться – не применяется, а то, что не должно – применяется. Стандартная утилита для анализа применения групповой политики – gpresult. Ее синтаксис может показаться довольно запутанным, однако я нашел нужную мне команду:

gpresult /r

Утилита выводит информацию в консоль Windows PowerShell, что не дает нам достаточно возможностей для диагностики – для работы с информацией приходится прокручивать экран туда и обратно.

01

Я могу передать информацию командлету Out-GridView.

gpresult /r | Out-GridView

 Несмотря на то, что вывод команды gpresult – обычный текст, это не мешает нам использовать командлет Out-GridView для разбора результатов ее выполнения.

Путем ввода символов в строку фильтра, я могу фильтровать содержимое текстового поля. Это привносит некоторые дополнительные возможности для обработки информации.

02

Более удобный способ – XML

Использование командлета Get-GPOReport (входящего в модуль GroupPolicy комплекта RSAT), предоставляет возможность еще более гибкого подхода к разбору настроек объекта групповой политики. Этот командлет может создавать два вида отчетов – HTML и XML. Также он обладает параметром –path, при помощи которого можно указать путь для сохранения файла отчета. Таким образом, для того, чтобы создать отчет об объекте групповой политики BackupOnLogOff, присутствующем в моем домене, я использую следующую команду:

Get-GPOReport -Name backuponlogoff -ReportType html -Path c:\fso\backup.html

Я могу открыть созданный отчет в Internet Explorer.

03

Нужно сказать, отчет в формате 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

На следующем рисунке приведены используемые команды и их вывод.

04

Если мне нужно получить владельца, я просмотрю свойства объекта 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

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/02/07/use-powershell-to-generate-and-parse-a-group-policy-object-report.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Март 26, 2013 в 11:37

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s