Элементы проверки работоспособности групповой политики Active Directory (часть 2)
Если вы хотите прочитать первую часть этой серии статей, перейдите по ссылке:
- Элементы проверки работоспособности групповой политики Active Directory — часть 1
В части 1 мы предоставили список элементов проверки работоспособности групповой политики, которые всегда следует включать в процедуру проверки работоспособности Active Directory. Мы предоставили сценарий PowerShell, который может помочь вам получить список объектов групповой политики, для которых настроены фильтры WMI, а затем определить объекты групповой политики, для которых настроены неправильные фильтры WMI. Во второй части мы сосредоточимся на сборе списка объектов групповой политики, которые были настроены в домене, но не применяются ни к каким учетным записям пользователей или компьютеров. Объект групповой политики бесполезен, если объект групповой политики не применяется к объектам пользователя и/или компьютера. Другими словами, создание большого количества объектов групповой политики, которые не применяются ни к одному объекту, может привести к ненужной обработке клиентскими расширениями, работающими на клиентах Active Directory. Во второй части этой серии статей мы предоставим сценарий PowerShell, который можно использовать для получения списка объектов групповой политики, которые были настроены в домене, но не применяются.
Требования
Перед запуском скрипта убедитесь, что соблюдены требования, указанные ниже:
- Настройте компьютер под управлением Windows Server 2012 или более поздних операционных систем.
- В операционной системе должны быть установлены модули PowerShell групповой политики. Сценарий PowerShell, описанный ниже, использует командлет Get-GPO PowerShell.
- Эмулятор PDC для каждого домена должен быть доступен для сбора списка объектов групповой политики.
Примечание. Приведенный ниже сценарий является частью динамических пакетов Active Directory для использования с профилировщиком работоспособности Active Directory. AD Health Profiler поставляется с 97 динамическими пакетами Active Directory. Динамические пакеты Active Directory можно использовать для полной проверки работоспособности леса Active Directory и создания отчета с указанием серьезности проблемы.
Что делает скрипт?
Скрипт выполняет следующие функции:
- Извлекает все домены из текущего леса Active Directory.
- Подключается к эмулятору PDC каждого домена.
- Выполняет командлет PowerShell Get-GPO для сбора объектов групповой политики и их параметров.
- Проверяет, сколько объектов групповой политики не применяется.
- Выходные данные сценария создаются в файле C:TempGPOsNotApplying.CSV.
Содержание скрипта
### Скрипт начинается здесь ### $TotNo=0 $ItemCount=0 $TestText = "" $TestStatus="" $SumVal = "" $GDomList = "C:TempDomList.DPC" Удалить-элемент $GDomList -ErrorAction SilentlyContinue $TestCSVFile = "C:Temp GPOsNotApplying.CSV" Удалить элемент $TestCSVFile -ErrorAction SilentlyContinue $CurForestName = "TechGenix.com" $R=Get-ADForest $CurForestName ForEach ($DomName в $R.Domains) { Add-Content $GDomList $DomName } ForEach ($ThisDomain в Get-Content "$GDomList") { $PDCServerToConnect = "Неизвестно" IF ($HitWin2012DC -eq "Да" -и $CredInputForPS -eq "Файл") { $ PDCCSV = Import-CSV $PrefDCFile ForEach ($ItemNow в $PDCCSV) { IF ($ItemNow.Domain -eq $ThisDomain) { $PDCServerToConnect = $ItemNow.'Предпочитаемый контроллер домена' break } } } else { $PDCCSV = Import- CSV $PDCListFile ForEach ($ItemNow в $PDCCSV) { IF ($ItemNow.Domain -eq $ThisDomain) { $PDCServerToConnect = $ItemNow.PDCServer break } } } $Error.Clear() $TotNotAppliedGPO=Get-GPO -All - Домен $ThisDomain -Server $PDCServerToConnect | %{ $gpoName = $_.displayName $GPOStatusNow = $_.GPOStatus [int]$counter = 0 $security = $_.GetSecurityInfo() $security | где{ $_.Permission -eq "GpoApply" } | %{ $counter += 1 } } IF ($Error.count -eq 0) { if ($counter -eq 0) { $FinalVal=$Gponame+","+$GPOStatusNow+","+$ThisDomain Add-Content " $TestCSVFile" $FinalVal $TotNo++ } } else { $ErrorOrNot="Yes" } } IF ($ErrorOrNot -eq "Yes") { $TestText = "Проверьте, доступен ли контроллер домена для выполнения Dynamic Pack." $SumVal = "" $TestStatus="Ошибка выполнения динамического пакета." } else { $FinalText = "" $SumVal=$ItemCount IF ($TotNo -eq 0) { $TestText = "Все объекты групповой политики настроены для применения к требуемым объектам." $SumVal = $TotNo $TestStatus="Passed" } else { $TestText = "Некоторые объекты групповой политики НЕ применяются ни к каким объектам. Пожалуйста, проверьте, почему эти объекты групповой политики не применяются ни к каким объектам. Эти объекты групповой политики могут иметь некоторые параметры политики, которые вы ожидаете применять к пользователям и компьютерам». $TestStatus="High" $SumVal = $TotNo } } $STR = $ADTestName +","+$TestStartTime+","+$TestStatus+","+$SumVal +","+$TestText ### Script Ends Here ###
После завершения выполнения сценария для всех доменов в лесу Active Directory будет создан отчет в файле CSV, как показано на рисунке 1 ниже.
Рис. 1. Отображение отчета GPO CSV, сгенерированного сценарием PowerShell
Как вы можете видеть на снимке экрана выше, скрипт сообщил только о тех объектах групповой политики, которые были включены в домене, но они не применяются ни к каким объектам. Сценарий обнаружил семь объектов групповой политики в домене TechGenix.com, которые не относятся ни к одному пользователю или компьютеру. Сценарий весьма полезен, когда в вашем домене Active Directory настроены сотни объектов групповой политики, и вы не знаете, какие объекты групповой политики не применяются. Если вы используете профилировщик работоспособности Active Directory, вы можете выполнить для леса Active Directory или домена, а затем отобразить выходные данные динамического пакета в консоли профилировщика работоспособности Active Directory, как показано на рисунке 2 ниже..
Рис. 2. Отображение отчета GPO в консоли AD Health Profiler
Сводка и следующий элемент проверки работоспособности объекта групповой политики
В этой части мы сосредоточились на сборе списка объектов групповой политики, которые не применяются ни к каким объектам. Вы можете включить приведенный выше сценарий PowerShell в процедуру проверки работоспособности Active Directory. В случае возникновения каких-либо проблем при запуске скрипта, отправьте электронное письмо по адресу [email protected].
В следующей части мы собираемся обсудить наш следующий элемент проверки работоспособности GPO, который собирает список GPO, отключенных в доменах Active Directory.