Windows просмотр примененных политик

Утилита командной строки GPResult.exe используется для получения результирующего набора групповых политик (Resultant Set of Policy, RSOP), которые применяются к пользователю и/или компьютеру в домене Active Directory. Gpresult позволяет вывести список доменных политик (GPO), которые применяются на компьютер и пользователя, настройки политик и ошибки обработки. Это наиболее часто используемый инструмент администратора для анализа настроек и диагностики групповых политик в Windows.

В этой статье мы рассмотрим, как использовать команду GPResult для диагностики и анализа настроек групповых политик, применяющихся к Windows в домене Active Directory.

Содержание:

  • Использование команды GPResult в Windows
  • GPResult: экспорт данных RSOP в HTML отчет
  • Получение отчета по политикам GPResult с удаленного компьютера
  • Пользователь не имеет данных RSOP
  • Следующие политики GPO не были применены, так как они отфильтрованы
  • Оснастка результирующих политик RSoP в Windows

Использование команды 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 (Пользователь/компьютер является членом следующих групп безопасности) – список доменных групп безопасности, в которых состоит пользователь/пользователь.

gpresult -r - диагностика групповых политик Active Directory

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

Если вы попробуете получить список GPO, примененных к компьютеру, под пользователем без прав локального администратора, команда gpresult вернет ошибку отказа в доступе:

gpresult /r /scope:computer

ERROR: Access Denied.

gpresult ошибка отказано в доступе

Для удобства анализа данных RSOP, вы можете перенаправить результаты Gpresult в буфер обмена:

Gpresult /r |clip

или текстовый файл:

Gpresult /r > c:\gpresult.txt

Чтобы вывести сверхподробную информацию RSOP, нужно добавить ключ /z.

Gpresult /r /z

Например, на скриншоте показаны настройки политики паролей в домене, которые применяются к компьютеру.

подробный отчет gpresult с настройка GPO которые применились к компьютеру

GPResult: экспорт данных RSOP в HTML отчет

Утилита GPResult позволяет сгенерировать HTML-отчет по примененным результирующим политикам (доступно в Windows 7 и выше). Такой отчет содержит подробную информацию обо всех параметрах Windows, которые задаются групповыми политиками и именами GPO, которые внесли изменения. Этот отчет по структуре напоминает вкладку Settings в консоли управления доменными групповыми политиками (
gpmc.msc
). Сгенерировать HTML отчет GPResult можно с помощью команды:

GPResult /h c:\gp-report\report.html /f

Если не указывать полный путь к HTML файлу, то HTML отчет gpresult будет сохранен в каталог
%WINDIR%\system32
.

GPResult html отчет с примененными политиками

Чтобы сгенерировать отчет и автоматически открыть его в браузере, выполните команду:

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

gpresult получить данные rsop с удаленного компьютера

Если вы не хотите, чтобы ваш пароль сохранялся в истории команд PowerShell, можно запросить пароль интерактивно:
gpresult /R /S wks22123 /scope user /U winitpro\kbuldogov /P

Аналогичным образом вы можете удаленно собрать данные как по пользовательским политикам, так и по политиками компьютера.

Если вы не знаете имя пользователя, под которым выполнен вход, можно узнать учетную запись на удаленном компьютере так:

qwinsta /SERVER:remotePC1

HTML отчет RSOP, аналогичный тому, который формирует команда gpresult можно создать с помощью PowerShell. Для получения результирующих политик с удаленного компьютера используется командлет Get-GPResultantSetOfPolicy из модуля GroupPolicy.

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

gpresult - групповые политики пользователя

Если вы не знаете имя учтённой записи, которая залогинена на удаленном компьютере, учетную запись можно получить так:

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.

консоль результирующей групповой политики - RSOP.msc

В современных версиях 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.

rsop.msc в Windows не показывает все примененные политики

В этой статье мы рассмотрели, как использовать утилиту GPResult для анализа результирующих групповых политик, которые применяются в Windows. Также для анализа применения GPO в домене рекомендуем использовать инструкции из статьи “Почему групповая политика не применяется к компьютеру или OU”.

In this guide, you will learn how to use the gpresult command line tool to verify what group policy objects are applied to a user or computer.

The gpresult command can help you troubleshoot group policy settings by showing which policies are applied to a user or computer.

Table of contents:

  • What is gpresult
  • How to install gpresult
  • How to use gpresult (examples)

What is gpresult

GPResult is a command line tool that shows the resultant set of policy for group policy objects. In other words, it creates a report that displays what group policy objects are applied to a user and computer.

If you are using group policy in your environment, then you definitely should know how to use this tool.

It’s possible for administrators to apply overlapping policy settings to a user or computer, the gpresult command can display these results and help in troubleshooting group policy issues.

Group Policy is an effective way for administrators to control policy settings, deploy software, apply permissions, and so on across the entire domain. 

When you have multiple Group Policy Objects you need a way to verify those objects are getting applied to a user or computer. 

This is exactly what GPresult was built to do. 

How to install gpresult

  • The gpresult command is included by default in Windows 10 and later editions for the Pro, Enterprise and Education editions.
  • All server versions since 2003 have gpresult by default or available through adding features.

To verify the gpresult command is installed open PowerShell, type gpresult and press enter. You should receive the gpresult help information.

gpresult help

How to use gpresult command

The gpresult /r command is the best way to check what GPOs are applied to a user and computer. The steps below walk through how to use and review the command output.

Step 1. Open PowerShell as Administrator

Import: If you don’t open PowerShell as administrator, the gpresult command will only display results for the user and not the computer.

It should display “Administrator” in the upper right corner.

powershell administrator

Step 2. Type gpresult /r and press enter

gpresult /r command

Step 3. Review the results

Below I’ll walk through the gpresult /r output from my computer and show you what I find most useful. Please note that your output will be different than mine.

Computer Settings

The computer settings section shows you two important details:

  • Last time group policy was applied = This could be from a reboot, refresh cycle or manually running the gpupdate command.
  • Group policy was applied from = Shows the domain controller the computer updated its GPOs from.
gpresult computer settings

Computer settings > Applied group policy objects

These are the GPO objects that are applied to the computer. This is important because it will help you verify that the GPO is being applied to the computer object.

applied group policy objects

Computer settings > The following GPOs were not applied because they were filtered out

These are GPOs that are linked to the computer but are not applied. This can be useful when troubleshooting why a GPO is not being applied. Check the delegation tab in the group policy management console to see if the GPO is being denied.

filtered gpo objects

User Settings > Applied group policy objects

These are group policy objects that are applied to the user account. This will help you verify if the GPO is being applied to the user or not.

user settings applied gpos

User Settings > The following GPOs were not applied because they were filtered out

These are GPOs that are linked to the user but are not applied.

gpresult filtered gpos

GPResult Additional Examples

There are several command line switches available with the gpresult command, to view all the options use this command.

gpresult /?

Key Parameters

  • /S: Specifies the remote system to connect to.
  • /U: Specifies the user context under which the command should run.
  • /P: Specifies the password for the given user context
  • /scope: Specifies whether the user or the computer settings need to be displayed.
  • /H: Saves the report in HTML format
  • /R: Displays RSoP summary data.
  • /V: Specifies that verbose information should be displayed

Tip: Run the command prompt as administrator or you may run into issues with the command returning computer settings.

Display GPOs applied to a specific user

If you don’t want to see both User and Computer GPOs then you can use the scope option to specify user or computer

gpresult /r /scope:user

Display GPOs applied to a specific computer

gpresult /r /scope:computer

Display GPOs applied on a remote computer

gpresult /s pc2 /r

Save gpresult to html

This generates an html report of the applied group policy objects.  If you don’t specify a path, it will save it to the system32 folder. In the above example, I’m saving the html report to c:\temp\reports.html

gpresult /h c:\temp\reports.html
gpresult save to html

Export to a text file

You can redirect the output to a text file with the command below. This is helpful if the results are producing lots of information.

gpresult /r >c:\results.txt

Group Policy Reports

If you want to create a report on GPO objects in your network, I recommend the AD Pro Toolkit. It includes over 200 built-in reports on users, groups, group policy, and security.

This easy to use tool will quickly generate a report on all GPOs, disabled GPOs, recently modified, and created, GPOs that are not linked, and much more. Below is a complete list of GPO reports.

General Group Policy Reports

  • All GPOs
  • All settings disabled
  • All settings enabled
  • Computer configuration disabled
  • User configuration disabled
  • Deleted GPOs
  • GPOs created in last 7 days
  • GPOs created in last 30 days
  • GPOs created in last 60 days
  • GPOs modified in last 1 days
  • GPOs modified in last 7 days
  • GPOs modified in last 30 days
  • Link not enabled
  • Block inheritance enabled
  • OU linked GPOs
  • Site linked GPOs
  • Domain linked GPOs

You can download a free trial and test the reports on your own network.

Group policy can be a pain, even when best practices are followed group policy can still be challenging.  Knowing how to use these built in tools will help you to verify and troubleshoot group policies in your environment. Go give it a try and let me know if you have any questions.

Related Articles

  • GPUpdate command: How to force a group policy update
  • GPO Cleanup – Find unused and empty group policy objects
  • How to backup Group Policy

Прочитано: 6 501

Для просмотра,  какие политики применяются на компьютер надо запустить командную строку (Нажать клавиатурное сочетание клавиш Win+R  и набрать cmd.exe) :

Набрать:

C:\Users\ekzorchik>gpresult /r /scope computer

Для просмотра, какие политики применяются на пользователя надо запустить командную строку (Нажать клавиатурное сочетание клавиш Win+R  и набрать cmd.exe):

Набрать:

C:\Users\ekzorchik>gpresult /r /scope user

На этом всё, удачи. Консоль командной строки позволяет узнать какие политики назначены, как на компьютер, так и на пользователя. На этом всё, удачи!!!

Sign in to your How-To Geek account

The Windows 11 Start Menu.

Hannah Stryker / How-To Geek

Quick Links

  • What is Group Policy in Windows?

  • View Applied Policies with the Resultant Set of Policy Tool

  • View Applied Policies with the Command Prompt

Summary

  • Group Policy in Windows allows network administrators to assign specific settings to groups of users or computers, and Local Group Policy applies settings only to a local computer or users.
  • The Resultant Set of Policy tool provides a graphical interface to browse through and see the Group Policy settings in effect on your PC. It shows enabled settings and some unconfigured security settings.
  • If you prefer using the Command Prompt, the gpresult command can show every last policy in effect on your PC and provide additional security information. Use the command with different scopes to view policies applied to users and computers.

We have shown you a lot of tips and tricks over the years that involve modifying Local Group Policy. If you would ever like to see all the Group Policy settings in effect on your PC, here’s how to do it.

What is Group Policy in Windows?

In the Windows world, Group Policy provides a way for network administrators to assign specific settings to groups of users or computers. Those settings then get applied whenever a user in the group logs in to a networked PC or whenever a PC in the group is started. Local Group Policy is a slightly more limited version that applies settings only to a local computer or users — or even a group of local users. We’ve featured a number of tricks here in the past that use Local Group Policy to change settings that you can’t change anywhere else — except by editing the Windows Registry. If you’re in the habit of changing Local Group Policy settings, you might find it useful to see all the changes you’ve made in one place, rather than digging through the Local Group Policy Editor.

Local Group Policy is only available in the Professional and Enterprise versions of Windows. If you’re using a Home edition, you won’t have access to the Local Group Policy Editor.

The easiest way to see all the Group Policy settings you’ve applied to your PC or user account is by using the Resultant Set of Policy tool. It doesn’t show every last policy applied to your PC — for that you’ll need to use the Command Prompt, as we describe in the next section. However, it does show pretty much all the policies you will have set for regular use. And it provides a simple, graphical interface for browsing through the Group Policy settings currently in effect on your PC — whether those settings come from Group Policy or Local Group Policy.

To open the tool, hit Start, type «rsop.msc,» and then click the resulting entry.

Searching for "rsop.msc" in the Start Menu search.

The Resultant Set of Policy tool starts by scanning your system for applied Group Policy settings.

RSOP scanning.

After it’s done scanning, the tool shows you a management console that looks very much like the Local Group Policy Editor — except that it only displays enabled settings along with a few unconfigured security settings.

The policy list.

This makes it easy to browse through and see what policies are in effect. Note that you can’t use the Resultant Set of Policy tool to change any of these settings. You can double-click a setting to view details, but if you want to disable or make changes to a setting, you’ll have to use the Local Group Policy Editor.

View Applied Policies with the Command Prompt

If you’re comfortable using the Command Prompt, it does provide a couple of advantages over using the Resultant Set of Policy tool. First, it can show every last policy in effect on your PC. Second, it will show some additional security information — like what security groups a user is part of or what privileges they have.

To do this, we’ll be using the gpresult command. You must specify a scope for the results, and valid scopes include «user» and «computer.» This means that to see all the policies in effect for the user and the PC, you’ll have to run the command twice.

To view all the policies applied to the user account you’re currently logged in with, you would use the following command:

gpresult /Scope User /v

The /v parameter in that command specifies verbose results, so you’ll see everything. Scroll down a bit and you’ll see a section named «Resultant Set Of Policies for User,» which contains the information you’re after.

The Command Prompt with policies output.

If you’re looking for all policies applied to your Computer, all you need to do is change the scope:

gpresult /Scope Computer /v

If you scroll down, you’ll see that there is now a Resultant Set Of Policies for Computer section.

There are no policies applied.

And there are other things you can do with the gpresult command. For example, if you’d like to save the report instead of viewing it at the Command Prompt, you could switch out the /v parameter in either of those commands and instead use /x (for XML format) or /h (for HTML format). Of course, you could also just use the /v version of the command and pipe it to a text file, if you prefer.

Тема использования PowerShell для администрирования крайне актуальна, и на Хабре появляется все больше и больше статей на эту тему. Предыдущий перевод статьи Джеффри Хикса, который мы опубликовали в прошлую пятницу, вызвал волну интереса. И как тут не вспомнить замечательное выступление того же автора на TechEd North America 2012. Доклад, который Джеффри Хикс проводил вместе с Джереми Московицем (Jeremy Moskowitz), был посвящен анализу объектов групповых политик и формированию отчетов. Оригинальный материал (видео) здесь, мы же приводим крактко содержание + скрипты. В любом случае рекомендуем посмотреть само видео.

В фокусе доклада было два вопроса:

  1. Строит отчеты по групповым политикам
  2. Проводим анализ групповых политик

Подробности – под катом.

Используем PowerShell в связке с групповыми политиками: что для этого нужно?

Чтобы использовать PowerShell при работе с групповыми политиками, нам необходимы:

  • Windows 7 (для запуска PowerShell)
  • RSAT для Windows 7
  • Собственно сам PowerShell v2.0 или выше
  • Опционально: рекомендуется Microsoft Active Directory Provider

Последовательность наших действий:

  • Импортируем модуль групповых политик (Import-module GroupPolicy)
  • Получаем объект групповых политик с помощью PowerShell (Get a GPO PowerShell Object)
  • Строим отчет на основе этого объекта
  • Строим HTML/XML-отчеты по объектам групповых политик
  • Парсим и осуществляем поиск в XML для целей анализа
  • Осуществляем поиск с помощью Select-XML и Xpath

Строим отчеты по групповым политикам

Проблема №1. Необходимо получить информацию о том, что в настоящий момент происходит в групповых политиках

PS C:\> Import-Module GroupPolicy
PS C:\> Get-GPO JeremyGPO

В данном случае вместо JeremyGPO выступает отображаемое имя (DisplayName) объекта групповых политик. Выводится такая табличка

DisplayName      : JeremyGPO
DomainName       : GLOBOMANTICS.local
Owner            : GLOBOMANTICS\Domain Admins
Id               : cd73c562-5bfe-40e2-b81e-28da10da425c
GpoStatus        : ComputerSettingsDisabled
Description      :
CreationTime     : 12/28/2011 2:52:37 PM
ModificationTime : 5/21/2012 11:08:26 AM
UserVersion      : AD Version: 4, SysVol Version: 4
ComputerVersion  : AD Version: 1, SysVol Version: 1
WmiFilter        :

Решение проблемы: создаем отчеты.

Например, перед нами стоит задача получить список всех объектов групповых, которые были изменены за последние 30 дней, отсортированные по убыванию (последние наверху) с тремя значениями (отображаемое имя, время изменения, описание). Полученную информацию необходимо экспортировать в .csv файл (GPOModReport.csv в данном примере). Как это выглядит в PowerShell:

PS C:\> get-gpo -all | Where {$_.ModificationTime -gt (Get-Date).AddDays(-30)}

... | Sort ModificationTime -Descending | Where {$_.ModificationTime -ge (Get-Date).AddDays(-30)} | Select Displayname,ModificationTime,Description

... | Export-CSV R:\GPOModReport.csv

Примеры дополнительных команд

#Созданные и измененные объекты групповых политик
PS C:\>get-gpo -all | Sort CreationTime,Modificationtime | Select Displayname,*Time
#Находим все объекты групповых политик, измененные за последние 30 дней 
PS C:\>get-gpo -all | Where {$_.ModificationTime -ge (Get-Date).AddDays(-30)}
#Создаем отчет по отдельному объекту групповых политик (Defaul Domain Policy)
PS C:\>Get-GPOReport -name "Default Domain Policy" -ReportType HTML -Path "c:\work\ddp.htm"
invoke-item "c:\work\ddp.htm"
#Создаем отчеты по всем объектам групповых политик
PS C:\>Get-GPOReport -All -ReportType HTML -Path "c:\work\allgpo.htm"
invoke-item "c:\work\allgpo.htm"
#Создаем для каждого объекта групповых политик свой отчет
#заменяем пробелы на _ в имени GPO
PS C:\>Get-GPO -all | foreach { 
 $f="{0}.htm" -f ($_.Displayname).Replace(" ","_")
 $htmfile=Join-Path -Path "C:\work" -ChildPath $f
 Get-GPOReport -Name $_.Displayname -ReportType HTML -Path $htmfile
 Get-Item $htmfile 
}

Проблема №2. Слишком много GPO, которые не используются.

Задача: найти пустые GPOs

  • Определить объекты групповых политик без настроек
  • Ищем XML ExtensionData
PS C:\> Import-Module GroupPolicy
PS C:\> [xml]$r = Get-GPOReport -Name MyGPO 
-ReportType XML
PS C:\> if ((-Not $r.gpo.user.extensiondata) -AND (-not $r.gpo.computer.extensiondata)) {
 "GPO is empty"
 }

Дополнительные команды

#requires -version 2.0

#find empty gpos in the domain

Function Get-EmptyGPO {

Param (
[Parameter(Position=0,ValueFromPipeline=$True,
ValueFromPipelinebyPropertyName=$True)]
[string]$DisplayName
)

Begin {
#import the GroupPolicy Module
Import-Module GroupPolicy

}

Process {
#create an XML report
[xml]$report=Get-GPOReport -Name $displayname -ReportType XML

 #totally empty
 if ((-Not $report.gpo.user.extensiondata) -AND (-not $report.gpo.computer.extensiondata)) {
    #no extension data so write
    Get-GPO -Name $Displayname
}

} #process

End {}

} #function

Function Test-EmptyGPO {

Param (
[Parameter(Position=0,ValueFromPipeline=$True,
ValueFromPipelinebyPropertyName=$True)]
[string]$DisplayName
)

Begin {
#import the GroupPolicy Module
Import-Module GroupPolicy

}

Process {

    #set default values
    $User=$False
    $Computer=$False
    #create an XML report
    [xml]$report=Get-GPOReport -Name $displayname -ReportType XML

    if ($report.gpo.user.extensiondata) {
     $User=$True
    }
    If ( $report.gpo.computer.extensiondata) {
     $Computer=$True
    }
    #write a custom object to the pipeline
    New-Object -TypeName PSObject -Property @{
    Displayname=$report.gpo.name
    UserData=$User
    ComputerData=$Computer
    }

} #Process

End {}

} #function

#Get-GPO -All | Get-EmptyGPO
#Get-GPO -All | Test-EmptyGPO

Проблема №3.
Кто обращался к объекту групповой политики?
Имеются ли GPO, в которых половина политики деактивирована (“Are there any GPOs with ‘half’ the policy disabled?”)
Имеются ли GPO, в которых все политики деактивированы (“Are there any GPOs with ‘all’ the policy disabled?”)

Применяем фильтр по статусу GPO (GPOStatus). Каждому из трех вопросов выше соответствуют три команды:

PS C:\> get-gpo -all | Sort GPOStatus | format-table -GroupBy GPOStatus Displayname,*Time
PS C:\> get-gpo -all | where {$_.GPOStatus -match "disabled"} | Select GPOStatus,Displayname
PS C:\> get-gpo -all | where {$_.GPOStatus -match "AllSettingsDisabled"}

Анализируем объекты групповых политик

Проблема №4. Обнаруживаем GPO без связей

PS C:\> Import-Module ActiveDirectory
Get-ADOrganizationalUnit -filter * | select-object
-ExpandProperty DistinguishedName | get-adobject 
-prop gplink | where {$_.gplink} | Select-object 
-expand gplink | foreach-object { 
foreach ($item in ($_.Split("]["))) {
$links+=$regex.match($item).Value
   } 
} 
Get-GPO -All | Where {$links -notcontains $_.id}

Дополнительные команды

#requires -version 2.0

<#
 Find unlinked GPOs. This requires the Active Directory Module
 This version does not query for site links
 #>

Import-Module ActiveDirectory,GroupPolicy

#GUID regular expression pattern
[Regex]$RegEx = "(([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12})"

#create an array of distinguishednames
$dn=@()
$dn+=Get-ADDomain | select -ExpandProperty DistinguishedName
$dn+=Get-ADOrganizationalUnit -filter * | select -ExpandProperty DistinguishedName

$links=@()

#get domain and OU links
    
foreach ($container in $dn) {

    #pull the GUID and add it to the array of links

    get-adobject -identity $container -prop gplink | 
    where {$_.gplink} | Select -expand gplink | foreach {
      
      #there might be multiple GPO links so split 
            
      foreach ($item in ($_.Split("]["))) {
        $links+=$regex.match($item).Value
      } #foreach item
    } #foreach
} #foreach container

#$links

<#
 get all gpos where the ID doesn't belong to the array
 write the GPO to the pipeline
#>

Get-GPO -All | Where {$links -notcontains $_.id} 

Проблема 5. Объекты групповых политик с излишними настройками в реестре (“Extra Registry Settings”)

Находим излишние настройки в реестре

#Use Xpath with the XML report data
PS C:\> [xml]$report = Get-GPOReport -Name MyGPO 
-ReportType XML
PS C:\> $ns = @{q3 = "http://www.microsoft.com/GroupPolicy/Settings/Registry"}
PS C:\> $nodes = Select-Xml -Xml $report -Namespace $ns -XPath "//q3:RegistrySetting" | select -expand Node | Where {$_.AdmSetting -eq 'false'}

Дополнительные команды

#requires -version 2.0

#find GPOs with extra registry, ie non-ADM settings

Function Test-GPOExtraRegistry {

Param (
[Parameter(Position=0,ValueFromPipeline=$True,
ValueFromPipelinebyPropertyName=$True)]
[string]$DisplayName
)

Begin {
    #import the GroupPolicy Module
    Import-Module GroupPolicy
}

Process {
#create an XML report
[xml]$report=Get-GPOReport -Name $displayname -ReportType XML
#define the XML namespace
$ns=@{q3="http://www.microsoft.com/GroupPolicy/Settings/Registry"}
$nodes=Select-Xml -Xml $report -Namespace $ns -XPath "//q3:RegistrySetting" | 
select -expand Node | Where {$_.AdmSetting -eq 'false'}

if ($nodes) {
  #extra settings were found so get the GPO and write it to the pipeline
  Get-GPO -Name $Displayname
}

}

End {}

} #function

#Import-Module GroupPolicy
#Get-GPO -all | Test-GPOExtraRegistry 

Еще раз обозначим, что мы привели в посте лишь сухой остаток того, что было продемонстрировано в докладе. Сам доклад можно посмотреть здесь.

Бонусы:

  • Ссылка на скрипты
  • Слайды
  • Бесплатная книга по Group Policy + PowerShell от одного из авторов доклада [ENG] (необходимо заполнить форму)

Также для построения отчетов по групповым политикам вы можете воспользоваться нашей программой NetWrix Group Policy Change Reporter.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Via high definition audio driver ver v7700d windows 10 64 bit
  • Ipsec в домене windows
  • Windows 10 не видит себя в сети службы
  • Мой компьютер не виден в локальной сети windows 10
  • Как установить windows 10 с флешки на ноутбук сони