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

Основной классический инструмент для управления групповыми политиками (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

Group Policy Management в Windows Server

Если вы хотите администрировать 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

С помощью PowerShell модуля GroupPolicy вы можете:

  • Создать или удалить GPO
  • Привязать, отвязать GPO от OU
  • Создать резервную копию или восстановить политику
  • Задать разрешения на 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=remontka,dc=loc"

New-GPO создать новую групповую политику в домене Active Directory

Чтобы отлинковать GPO от OU:

Remove-GPLink -Name spbTestGPO -Target "ou=test,ou=spb,ou=ru,dc=remontka,dc=loc"

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

Set-GPLink -name spbTestGPO -Target "ou=test,ou=spb,ou=ru, dc=remontka,dc=loc" -linkenabled no

GPO перестала применяться к OU, но осталась слинкованной.

Если нужно применить GPO в принудительном режиме, добавьте параметр -Enforced Yes.

GPO отключить ссылку GPO: link enabled

Следующая однострочная команда PowerShell создаст новую GPO, которая меняет настройки одного параметра реестра ( отключает автообновление драйверов ), ограничит применение политики определенной группой безопасности, и прилинкует к определенному OU:

$key = 'HKLMSOFTWAREMicrosoftWindowsCurrentVersionDriverSearching'
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=remontka,dc=loc" –Order 1

Модуль PowerShell не позволяет изменить значение произвольного параметра GPO из административных admx шаблонов . Для редактирования доступны только параметры реестра, распространяющиеся через Group Policy Preferences.

С помощью командлета Get-GPO можно вывести информацию о конкретном объекте GPO или о всех политиках в домене. Данный командлет возвращает GUID политики (часто нужен при диагностике применения GPO на компьютерах или решения проблем с репликацией объектов политик при проверке состояния AD ), время создания, модификации политики, примененные WMI фильтры GPO .

Get-GPO -Domain remontka.com -All

Get-GPO вывод информации о GPO

Можно вывести настройки WMI фильтра, привязанного к GPO (но изменить настройки фильтра не получится):(Get-GPO spbWin10Settings).WmiFilter

PowerShell: применение GPO, результирующие политики

Для обновления групповых политик на удаленных компьютерах используется командлет Invoke-GPUpdate . Можно обновить настройки GPO на конкретном компьютере:

Invoke-GPUpdate -Computer "corppc0200" -Target "User"

Или на всех компьютерах в указанной OU:

Get-ADComputer –filter * -Searchbase "ou=Computes,OU=SPB,dc=remontka,dc=com" | foreach{ Invoke-GPUpdate –computer $_.name -force}

Командлет Get-GPOReport используется для построения HTML/XML отчетов с настройками указанной политики:

Get-GPOReport -name spb-BitlockerEncryption -ReportType HTML -Path "C:psbitlockerpolicy.html"

В данном случае мы вывели все настройки в политике автоматического сохранения ключей BitLocker в AD .

powershell: создаем результирующий отчет по GPO с помощью Get-GPOReport

Командлет Get-GPResultantSetofPolicy позволяет построить результирующий отчет (RSoP — Resultant Set of Policy) по примененным групповым политикам к указанному пользователю и (или) компьютеру. Этот отчет выглядит аналогично HTML отчету о примененных политиках к компьютеру, который генерируется с помощью утилиты gpresult ( GPResult /h c:psgp-report.html /f ). Командлет позволяет получить отчет по результирующим групповым политикам с удаленного компьютера:
Get-GPResultantSetOfPolicy -user kbuldogov -computer corppc0200 -reporttype html -path c:psgp_rsop_report.html

Резервное копирование и восстановление GPO

С помощью PowerShell вы можете создавать резервные копии объектов групповых политик в домене и восстанавливать их.

Можно создать резервную копию всех GPO:

Backup-GPO -All -Path C:BackupGPOs

Или только одной политики:
Backup-GPO -Name spbWin10Settings -Path C:BackupGPOs -Comment ″Test GPO Backup PowerShell″

Для восстановления GPO используется:

Restore-GPO -Name spbWin10Settings -Path C:BackupGPOs

Вы можете хранить несколько версий резервных копий GPO в одной папке. Чтобы восстановить определенную версию GPO, нужно указать ее ID резервной копии (32 разрядный идентификатор):

Restore-GPO -Path ″C:GPO Backups″ -BackupID 1235469-1234-5432-AAAA-8987778333

EnglishRussianUkrainian