Основной классический инструмент для управления групповыми политиками (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
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
Полный список PowerShell командлетов в модуле GroupPolicy можно вывести с помощью команды:
Get-Command –Module 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=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
С помощью командлета 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{ Invoke-GPUpdate –computer $_.name -force}
Командлет Get-GPOReport используется для построения HTML/XML отчетов с настройками указанной политики:
Get-GPOReport -name spb-BitlockerEncryption -ReportType HTML -Path "C:\ps\bitlockerpolicy.html"
В данном случае мы вывели все настройки в политике автоматического сохранения ключей BitLocker в AD.
Командлет 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