Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о получении результатов групповой политики (Resultant Set of Policy) при помощи Windows PowerShell.
Создает отчет RSoP в формате XML
Как я говорил в предыдущей статье, существует возможность сгенерировать отчет RSoP для всех объектов групповой политики при помощи утилиты GRResult. Основная проблема с этой утилитой заключается в ее синтаксисе. Его сложно назвать интуитивным и целостным, и примеры использования в онлайновой справке никак не исправляют эту ситуацию. Совсем другая ситуация с Windows PowerShell. Приобретя навыки работы с ним, используя одни командлеты, вы одинаково эффективно сможете применять их при работе с любыми другими командлетами. А в случае, если вы забудете указать необходимый параметр, PowerShell предложит вам ввести его после запуска команды.
Административные права
Помните, что для запуска командлета Get-GPResultantSetOfPolicy вам потребуется запустить Windows PowerShell с повышенными правами. К сожалению, выдаваемая ошибка никак не проясняет причины ее возникновения. Вот что вы увидите при попытке запуска командлета без прав администратора:
Вы можете спросить, как я узнал, что ошибка возникает из-за отсутствия административных прав? Ну вообще-то я написал книгу по WMI, и в сообщении HRESULT: 0x80041003 я узнал знакомую ошибку – доступ запрещен. Я сказал WMI? Да, действительно. Данные RSoP на самом деле находятся в репозитории WMI, в пространстве имен Root/RSoP. Таким образом, появление ошибки WMI не такое уж неожиданное.
Когда я открою консоль Windows PowerShell с административными правами, я импортирую модуль и запущу команду создания XML-отчета. В моей предыдущей статье, я использовал командлет Get-GPOReport для анализа определенного объекта групповой политики.
Командлет Get-GPOReport возвращает XML-объект прямо в консоль Windows PowerShell, если не указать параметр –Path. Я использовал эту возможность, чтобы сохранить результаты командлета в переменной, определенной как XMLDocument, что в дальнейшем позволяет работать с полученными объектами. Однако, поступить таким же образом с командлетом Get-GPResultantSetOfPolicy не получится, поэтому нам придется указать путь сохранения файла. При запуске следующей команды будет выведен запрос указания пути.
Get-GPResultantSetOfPolicy -ReportType xml
На рисунке ниже представлены команда, запрос пути и результаты ее выполнения после того, как путь будет указан.
Разбираем XML-отчет
После того, как отчет будет сгенерирован, консоль с повышенными правами нам будет уже не нужна. Я могу открыть консоль под обычным пользователем, сконвертировать содержимое файла в XML и начать с ним работать. Это показано на рисунке ниже.
Одна из вещей, которые меня интересуют – это порядок применения объектов групповой политики. Это важно потому, что политика, применяемая последней, всегда имеет приоритет. Например, я могу включить что-то в одной политике, отключить это в другой, и снова включить в третьей. Результирующее состояние этой настройки будет зависеть от того, в каком порядке будут применены политики.
Следующая команда выводит имя политики и порядок ее применения.
14:27 C:\> $xml.DocumentElement.ComputerResults.GPO | select name, @{LABEL=»LinkOrder»; EXPRESSION={$_.link.linkorder}} | sort linkorder
Name LinkOrder
—- ———
Local Group Policy 1
EnablePSRemoting 2
Enable WMI Relibility 3
Default Domain Policy 4
BackupOnLogOff 5
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell