Управление групповыми политиками (GPO) в Active Directory с помощью PowerShell

15.11.2022

itpro

Active Directory, PowerShell, Windows Server 2019, Групповые политики

комментария 2
Основной классический инструмент для управления групповыми политиками (GPO) в домене Active Directory — графическая консоль Group Policy Management Console (gpmc.msc). Однако для автоматизации и повышения эффективности некоторых задач управления GPO в Active Directory, вы можно использовать PowerShell, который предоставляет широкие возможности по администрированию групповых политик.
Установка PowerShell модуля управления групповыми политиками
Для управления доменными групповыми политиками на вашем компьютере должен быть установлен модуль GroupPolicy. Данный модуль доступен в Windows Server после установки компонента Group Policy Management. Данную опцию можно установить из консоли Server Manager или с помощью PowerShell:
Install-WindowsFeature GPMC -IncludeManagementTools

Если вы хотите администрировать GPO с рабочей станции с десктопной редакцией Windows 10 или 11, модуль групповых политик устанавливается через RSAT:
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
Полный список PowerShell командлетов в модуле GroupPolicy можно вывести с помощью команды:
Get-Command –Module GroupPolicy

С помощью PowerShell модуля GroupPolicy вы можете:
-
Создать или удалить GPO
Управление GPO с помощью PowerShell
Рассмотрим несколько типовых задач администратора, в которых можно использовать PowerShell для управления групповыми политиками.
Чтобы создать новую пустую политику, воспользуйтесь командой:
New-GPO -Name spbTestGPO -Comment «Testing GPO PowerShell»
Если у вас в домене созданы стартовые групповые политики (Starter GPO), вы можете создать новую политику на основе такого шаблона (например, с определенными настройками Security Baseline):
New-GPO -Name spbTestGPO2 -StarterGPOName «Windows 10 Security Baseline»
Чтобы назначить политику на определенную OU, используйте командлет New-GPLink:
Get-GPO spbTestGPO | New-GPLink -Target «ou=test,ou=spb,ou=ru,dc=winitpro,dc=loc»

Чтобы отлинковать GPO от OU:
Remove-GPLink -Name spbTestGPO -Target «ou=test,ou=spb,ou=ru,dc=winitpro,dc=loc»
Если нужно отключить применение GPO, но не удалять связь, используется командлет Set-GPLink:
Set-GPLink -name spbTestGPO -Target «ou=test,ou=spb,ou=ru, dc=winitpro,dc=loc» -linkenabled no
GPO перестала применяться к OU, но осталась слинкованной.
Если нужно применить GPO в принудительном режиме, добавьте параметр -Enforced Yes.

Следующая однострочная команда PowerShell создаст новую GPO, которая меняет настройки одного параметра реестра (отключает автообновление драйверов), ограничит применение политики определенной группой безопасности, и прилинкует к определенному OU:
$key = ‘HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
New-GPO ‘spbDisableDriverUpdate’ | Set-GPRegistryValue -Key $key `
-ValueName ‘SearchOrderConfig’ -Type DWORD -Value 0 | Set-GPPermissions -Replace `
-PermissionLevel None -TargetName ‘Authenticated Users’ -TargetType group | `
Set-GPPermissions -PermissionLevel gpoapply -TargetName ‘spb_admins’ `
-TargetType group | New-GPLink -Target «ou=test,ou=spb,ou=ru,dc=winitpro,dc=loc» –Order 1
Модуль PowerShell не позволяет изменить значение произвольного параметра GPO из административных admx шаблонов. Для редактирования доступны только параметры реестра, распространяющиеся через Group Policy Preferences.
С помощью командлета Get-GPO можно вывести информацию о конкретном объекте GPO или о всех политиках в домене. Данный командлет возвращает GUID политики (часто нужен при диагностике применения GPO на компьютерах или решения проблем с репликацией объектов политик при проверке состояния AD), время создания, модификации политики, примененные WMI фильтры GPO.
Get-GPO -Domain winitpro.ru -All

Можно вывести настройки WMI фильтра, привязанного к GPO (но изменить настройки фильтра не получится):(Get-GPO spbWin10Settings).WmiFilter
PowerShell: применение GPO, результирующие политики
Для обновления групповых политик на удаленных компьютерах используется командлет Invoke-GPUpdate. Можно обновить настройки GPO на конкретном компьютере:
Invoke-GPUpdate -Computer «corp\pc0200» -Target «User»
Или на всех компьютерах в указанной OU:
Get-ADComputer –filter * -Searchbase «ou=Computes,OU=SPB,dc=winitpro,dc=com» | foreach
Командлет Get-GPOReport используется для построения HTML/XML отчетов с настройками указанной политики:
Get-GPOReport -name spb-BitlockerEncryption -ReportType HTML -Path «C:\ps\bitlockerpolicy.html»

Командлет Get-GPResultantSetofPolicy позволяет построить результирующий отчет (RSoP — Resultant Set of Policy) по примененным групповым политикам к указанному пользователю и (или) компьютеру. Этот отчет выглядит аналогично HTML отчету о примененных политиках к компьютеру, который генерируется с помощью утилиты gpresult ( GPResult /h c:\ps\gp-report.html /f ). Командлет позволяет получить отчет по результирующим групповым политикам с удаленного компьютера:
Get-GPResultantSetOfPolicy -user kbuldogov -computer corp\pc0200 -reporttype html -path c:\ps\gp_rsop_report.html
Резервное копирование и восстановление GPO
С помощью PowerShell вы можете создавать резервные копии объектов групповых политик в домене и восстанавливать их.
Можно создать резервную копию всех GPO:
Backup-GPO -All -Path C:\Backup\GPOs\
Или только одной политики:
Backup-GPO -Name spbWin10Settings -Path C:\Backup\GPOs -Comment ″Test GPO Backup PowerShell″
Для восстановления GPO используется:
Restore-GPO -Name spbWin10Settings -Path C:\Backup\GPOs\
Вы можете хранить несколько версий резервных копий GPO в одной папке. Чтобы восстановить определенную версию GPO, нужно указать ее ID резервной копии (32 разрядный идентификатор):
Restore-GPO -Path ″C:\GPO Backups″ -BackupID 1235469-1234-5432-AAAA-8987778333
Предыдущая статья Следующая статья
gpresult
Displays the Resultant Set of Policy (RSoP) information for a remote user and computer. To use RSoP reporting for remotely targeted computers through the firewall, you must have firewall rules that enable inbound network traffic on the ports.
Syntax
gpresult [/s [/u [/p []]]] [/user [\]] [/scope ]
Except when using /?, you must include an output option, /r, /v, /z, /x, or /h.
Parameters
| Parameter | Description |
|---|---|
| /s | Specifies the name or IP address of a remote computer. Don’t use backslashes. The default is the local computer. |
| /u | Uses the credentials of the specified user to run the command. The default user is the user who is signed in to the computer that issues the command. |
| /p [] | Specifies the password of the user account that is provided in the /u parameter. If /p is omitted, gpresult prompts for the password. The /p parameter can’t be used with /x or /h. |
| /user [\]] | Specifies the remote user whose RSoP data is to be displayed. |
| /scope | Displays RSoP data for either the user or the computer. If /scope is omitted, gpresult displays RSoP data for both the user and the computer. |
| [/x | /h] | Saves the report in either XML (/x) or HTML (/h) format at the location and with the file name that is specified by the filename parameter. Can’t be used with /u, /p, /r, /v, or /z. |
| /f | Forces gpresult to overwrite the file name that is specified in the /x or /h option. |
| /r | Displays RSoP summary data. |
| /v | Displays verbose policy information. This includes detailed settings that were applied with a precedence of 1. |
| /z | Displays all available information about Group Policy. This includes detailed settings that were applied with a precedence of 1 and higher. |
| /? | Displays help at the command prompt. |
Remarks
- Group Policy is the primary administrative tool for defining and controlling how programs, network resources, and the operating system operate for users and computers in an organization. In an active directory environment, Group Policy is applied to users or computers based on their membership in sites, domains, or organizational units.
- Because you can apply overlapping policy settings to any computer or user, the Group Policy feature generates a resulting set of policy settings when the user signs in. The gpresult command displays the resulting set of policy settings that were enforced on the computer for the specified user when the user signed in.
- Because /v and /z produce much information, it’s useful to redirect output to a text file (for example, gpresult/z >policy.txt ).
- On ARM64 versions of Windows, only the gpresult in SysWow64 works with the /h parameter.
Examples
To retrieve RSoP data for only the remote user maindom\targetuser, on the computer srvmain, enter:
gpresult /s srvmain /user maindom\targetuser /scope user /r
To save all available information about Group Policy to a file named policy.txt for only the remote user maindom\targetuser, on the computer srvmain, enter:
gpresult /s srvmain /user maindom\targetuser /z > policy.txt
To display RSoP data for the signed-in user, maindom\hiropln with the password p@ssW23, for the computer srvmain, enter:
gpresult /s srvmain /u maindom\hiropln /p p@ssW23 /r
Related links
gpresult
Отображает сведения о результирующем наборе политик (RSoP) для удаленного пользователя и компьютера. Чтобы использовать отчеты RSoP для удаленных компьютеров через брандмауэр, необходимо иметь правила брандмауэра, которые обеспечивают входящий сетевой трафик на портах.
Синтаксис
gpresult [/s [/u [/p []]]] [/user [\]] [/scope ]
Кроме того, при использовании /?необходимо включить выходной параметр, /r, /v, /z, /x или /h.
Параметры
| Параметр | Описание |
|---|---|
| /s | Указывает имя или IP-адрес удаленного компьютера. Не используйте обратные очки. По умолчанию используется локальный компьютер. |
| /U | Использует учетные данные указанного пользователя для выполнения команды. Пользователь по умолчанию — это пользователь, вошедший на компьютер, который выдает команду. |
| /P [] | Указывает пароль учетной записи пользователя, предоставленной в параметре /u . Если параметр /p опущен, gpresult запрашивает пароль. Параметр /p нельзя использовать с /x или /h. |
| /Пользователя [\]] | Указывает удаленного пользователя, данные RSoP которого должны отображаться. |
| /область | Отображает данные RSoP для пользователя или компьютера. Если параметр /область опущен, gpresult отображает данные RSoP как для пользователя, так и для компьютера. |
| [/x | /h] | Сохраняет отчет в формате XML (/x) или HTML ( /h) в расположении и с именем файла, указанным параметром имени файла. Не удается использовать /u, /p, /r, /v или /z. |
| /f | Заставляет gpresult перезаписать имя файла, указанное в параметре /x или /h . |
| /r | Отображает сводные данные RSoP. |
| /v | Отображает подробные сведения о политике. Сюда входят подробные параметры, которые были применены с приоритетом 1. |
| /z | Отображает все доступные сведения о групповой политике. Сюда входят подробные параметры, которые были применены с приоритетом 1 и выше. |
| /? | Отображение справки в командной строке. |
Замечания
- Групповая политика — это основное средство администрирования для определения и управления тем, как программы, сетевые ресурсы и операционная система работают для пользователей и компьютеров в организации. В среде Active Directory групповая политика применяется к пользователям или компьютерам на основе их членства в сайтах, доменах или подразделениях.
- Так как вы можете применить перекрывающиеся параметры политики к любому компьютеру или пользователю, функция групповой политики создает результирующий набор параметров политики при входе пользователя. Команда gpresult отображает результирующий набор параметров политики, которые были применены на компьютере для указанного пользователя при входе пользователя.
- Так как /v и /z создают много информации, полезно перенаправить выходные данные в текстовый файл (например, gpresult/z >policy.txt ).
- В версиях ARM64 Windows только gpresult в SysWow64 работает с параметром /h .
Примеры
Чтобы получить данные RSoP только для удаленного пользователя maindom\targetuser, на компьютере srvmain введите:
gpresult /s srvmain /user maindom\targetuser /scope user /r
Чтобы сохранить все доступные сведения о групповой политике в файл с именем policy.txt только для удаленного пользователя maindom\targetuser, на компьютере srvmain введите:
gpresult /s srvmain /user maindom\targetuser /z > policy.txt
Чтобы отобразить данные RSoP для пользователя, выполнившего вход, maindom\hiropln с p@ssW23 пароля для компьютера srvmain введите:
gpresult /s srvmain /u maindom\hiropln /p p@ssW23 /r
Дополнительные ссылки
Команда GPResult: диагностика результирующих групповых политик

15.11.2022

itpro

Active Directory, Windows 10, Windows Server 2019, Групповые политики

комментария 23
Утилита командной строки GPResult.exe используется для получения результирующего набора групповых политик (Resultant Set of Policy, RSOP), которые применяются к пользователю и/или компьютеру в домене Active Directory. Gpresult позволяет вывести список доменных политик (GPO), которые применяются на компьютер и пользователя, настройки политик и ошибки обработки. Это наиболее часто используемый инструмент администратора для анализа настроек и диагностики групповых политик в Windows.
В этой статье мы рассмотрим, как использовать команду GPResult для диагностики и анализа настроек групповых политик, применяющихся к Windows в домене Active Directory.
Использование команды GPResult в Windows
Команда GPResult выполняется на компьютере, на котором нужно проверить применение групповых политик. Синтаксис GPResult:
Чтобы получить подробную информацию о групповых политиках, которые применяются к данном объекту AD (пользователю и компьютеру), и других параметрах, относящихся к инфраструктуре GPO (т.е. результирующие настройки политик GPO – RsoP), выполните команду:
Результаты выполнения команды разделены на 2 секции:
- COMPUTERSETTINGS(Конфигурация компьютера)– раздел содержит информацию об объектах GPO, действующих на компьютер в Active Directory;
- USERSETTINGS – раздел с политиками пользователя (политики, действующие на учетную запись пользователя в AD).
Вкратце пробежимся по основным параметрам/разделам, которые нас могут заинтересовать в выводе GPResult:

В нашем примере видно, что на объект пользователя действуют 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.
![]()
Для удобства анализа данных RSOP, вы можете перенаправить результаты Gpresult в буфер обмена:
Gpresult /r |clip
или текстовый файл:
Gpresult /r > c:\gpresult.txt
Чтобы вывести сверхподробную информацию RSOP, нужно добавить ключ /z.
Например, на скриншоте показаны настройки политики паролей в домене, которые применяются к компьютеру.

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 /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
![]()
Если вы не хотите, чтобы ваш пароль сохранялся в истории команд PowerShell, можно запросить пароль интерактивно:
gpresult /R /S wks22123 /scope user /U winitpro\kbuldogov /P
Аналогичным образом вы можете удаленно собрать данные как по пользовательским политикам, так и по политиками компьютера.
Если вы не знаете имя пользователя, под которым выполнен вход, можно узнать учетную запись на удаленном компьютере так:
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

Если вы не знаете имя учтённой записи, которая залогинена на удаленном компьютере, учетную запись можно получить так:
Также проверьте время (и часовой пояс) на клиенте. Время должно соответствовать времени на PDC (Primary Domain Controller).
Следующие политики GPO не были применены, так как они отфильтрованы
При отладке и траблшутинге применения групповых политик стоит также обращать внимание на секцию: The following GPOs were not applied because they were filtered out (Следующие политики GPO не были применены, так как они отфильтрованы). В этой секции отображается список GPO, которые по той или иной причине не применяются к этому объекту. Возможные варианты, по которым политика может не применяться:
- Filtering: NotApplied(Empty) (Фильтрация:Не применено (пусто)) – политика пустая (применять, нечего);
- Filtering: Denied(UnknownReason) (Фильтрация:Не применено (причина неизвестна)) – скорее всего у пользователя или компьютера отсутствуют разрешения на чтение/применение этой политики. Разрешения настраиваются на вкладке 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.

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

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