Применяются ли ваши GPO? Используйте этот скрипт PowerShell, чтобы узнать

Опубликовано: 15 Марта, 2023
Применяются ли ваши GPO? Используйте этот скрипт PowerShell, чтобы узнать

Объекты групповой политики должны применяться к правильным объектам, чтобы применить параметры политики, настроенные в объектах групповой политики. Например, если вы намеревались применить параметры объекта групповой политики к финансовой группе и забыли добавить финансовых пользователей или группы безопасности на вкладку разрешений объекта групповой политики, параметры объекта групповой политики не будут применяться. Если в вашей среде настроены сотни объектов групповой политики, потребуется значительное время, чтобы проверить все объекты групповой политики один за другим, чтобы убедиться, что они применимы к требуемым объектам. Мы можем проверить разрешения GPO с помощью PowerShell. Хотя сценарий, представленный в этой статье, не проверяет, применяются ли объекты групповой политики к правильным объектам, сценарий проверяет, применяется ли объект групповой политики по крайней мере к объектам. Объект может быть пользователем, компьютерным объектом или группой безопасности.

Проверка объектов групповой политики

PowerShell очень удобен, когда нужно проверить разрешения GPO для всех объектов групповой политики в указанном домене Active Directory. Сценарий PowerShell, представленный в этой статье, выполняет следующие операции:

  • Собирает все объекты групповой политики из домена Active Directory, указанного в переменной «$ThisDomain». Вы должны изменить доменное имя перед выполнением скрипта.
  • Собирает объекты безопасности для каждого объекта групповой политики и проверяет, сколько объектов настроено. Если возвращаемое значение равно 0, это означает, что объект групповой политики не применяется и этот объект групповой политики указан в файле отчета.
  • Создается файл отчета с именем C:TempGPOApplicationReport.CSV, который содержит имя объекта групповой политики, состояние объекта групповой политики и доменное имя объекта групповой политики.

Сценарий PowerShell

Выполнение этого скрипта PowerShell создаст отчет в формате CSV. Сценарий требует, чтобы модули PowerShell групповой политики были установлены в операционной системе Windows Server 2012 или более поздней версии.

$ReportFile = "C:TempGPOApplicationReport.CSV" $STR = "Имя GPO, статус GPO, домен" Add-Content $ReportFile $STR $TestText="" $TotNo=0 $ThisDomain = "TechGenix.com" $ PDCServerToConnect="PDC1.TechGenix.com" $TotNotAppliedGPO=Get-GPO -All -Domain $ThisDomain -Server $PDCServerToConnect | %{ $gpoName = $_.displayName $GPOStatusNow = $_.GPOStatus [int]$counter = 0 $security = $_.GetSecurityInfo() $security | где{ $_.Permission -eq "GpoApply" } | %{ $counter += 1 }} if ($counter -eq 0) { $FinalVal=$Gponame+","+$GPOStatusNow+","+$ThisDomain Add-Content $ReportFile $FinalVal $TotNo++ } IF ($TotNo - eq 0) { $TestText = "Все объекты групповой политики настроены для применения к требуемым объектам." } else { $TestText = "Некоторые объекты групповой политики НЕ применяются ни к каким объектам. Пожалуйста, проверьте, почему эти объекты групповой политики не применяются ни к каким объектам. Эти объекты групповой политики могут иметь некоторые параметры политики, которые вы ожидаете применить к пользователям и компьютерам." } $ТестТекст

После завершения выполнения сценария PowerShell вы можете увидеть отчет в разделе «C:TempGPOApplicationReport.CSV», который содержит имя объекта групповой политики, сообщение и домен, к которому принадлежит объект групповой политики. Это также показано на скриншоте ниже:

Как видно из приведенного выше вывода, сценарий сообщил о четырех объектах групповой политики, которые не применяются ни к каким объектам. Любой объект групповой политики, который не применяется ни к каким объектам, не имеет никакой функции в домене. Сценарий также сообщает о статусе GPO. Если объект групповой политики включен и не применяется, вы должны проверить объект групповой политики, чтобы узнать, почему включенный объект групповой политики не применяется к объектам. Сценарий сообщил, что TestGPO1 и TestGPO4 включены, но не применяются ни к каким объектам.

Приведенный выше сценарий был получен из динамического пакета «Domain GPO Not Applied Test» из Active Directory Health Profiler. Active Directory Health Profiler может сообщать об объектах групповой политики, которые не применяются ни к каким объектам, а также может использоваться для выполнения нескольких других проверок работоспособности Active Directory. Все, что вам нужно сделать, это просто выбрать динамический пакет «Domain GPO Not Applied Test» в окне «Динамические пакеты», а затем выполнить его, чтобы получить данные GPO, как показано на снимке экрана ниже:

Заключительная мысль

Вы можете использовать сценарий PowerShell для проверки всех объектов групповой политики в отношении любого домена. Но не забывайте: вам нужно изменить доменное имя в переменной $ThisDomain.