Элементы проверки работоспособности групповой политики Active Directory (часть 3)

Опубликовано: 17 Марта, 2023

Если вы хотите прочитать первую часть этой серии статей, перейдите по ссылке:

  • Элементы проверки работоспособности групповой политики Active Directory (часть 1)
  • Элементы проверки работоспособности групповой политики Active Directory (часть 2)

В части 1 мы предоставили список элементов проверки работоспособности групповой политики, которые всегда следует включать в процедуру проверки работоспособности Active Directory. Мы объяснили два из восьми элементов проверки работоспособности групповой политики, которые всегда следует включать в процедуру проверки работоспособности Active Directory. В части 1 мы также предоставили сценарий PowerShell, который может помочь вам получить список объектов групповой политики, для которых настроены фильтры WMI, а затем определить объекты групповой политики, для которых настроены неправильные фильтры WMI.

В части 3 мы сосредоточимся на сборе списка объектов групповой политики, которые отключены в доменах Active Directory. Хотя клиентские расширения, иногда называемые CSC, на клиентах Active Directory не обрабатывают отключенные объекты групповой политики, но нет смысла хранить большое количество отключенных объектов групповой политики в производственной среде Active Directory. Мы собираемся предоставить сценарий PowerShell, который вы можете использовать для получения списка объектов групповой политики, настроенных в доменах, но отключенных.

Требования

Перед запуском скрипта убедитесь, что соблюдены требования, указанные ниже:

  • Обязательно выполните нижеприведенный сценарий PowerShell на компьютере с операционной системой Windows Server 2012 или более поздней версии.
  • Поскольку сценарий PowerShell использует командлет Get-GPO PowerShell, обязательно установите модули PowerShell групповой политики через диспетчер серверов. Все, что вам нужно сделать, это включить функцию GPMC, которая, в свою очередь, установит необходимые модули PowerShell групповой политики.
  • Эмулятор PDC должен быть доступен для каждого домена, чтобы собрать список объектов групповой политики и затем проверить статус объекта групповой политики.

Что делает скрипт?

Скрипт выполняет следующие функции:

  • Извлекает все домены из текущего леса Active Directory.
  • Подключается к эмулятору PDC каждого домена.
  • Выполняет командлет Get-GPO PowerShell для сбора объектов групповой политики и их параметров.
  • Проверяет, сколько объектов групповой политики не применяется.
  • Вывод скрипта создается в файле C:TempDisabledGPOs.CSV.

Содержание скрипта

### Сценарий начинается здесь ###


$TotNo=0
$ItemCount=0
$ТестТекст = ""
$ТестСтатус=""
$Сумвал = ""
$GDomList = "C:TempDomList.DPC"
Удалить элемент $GDomList -ErrorAction SilentlyContinue
$TestCSVFile = "C:TempDisabledGPOs.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 = "Неизвестно"
ЕСЛИ ($HitWin2012DC -eq "Да" -и $CredInputForPS -eq "Файл")
{
$PDCCSV = Импорт-CSV $PrefDCFile
ForEach ($ItemNow в $PDCCSV)
{
ЕСЛИ ($ItemNow.Domain -eq $ThisDomain)
{
$PDCServerToConnect = $ItemNow.'Предпочитаемый контроллер домена'
ломать
}
}
}
еще
{
$PDCCSV = Импорт-CSV $PDCListFile
ForEach ($ItemNow в $PDCCSV)
{
ЕСЛИ ($ItemNow.Domain -eq $ThisDomain)
{
$PDCServerToConnect = $ItemNow.PDCServer
ломать
}
}
}
$Ошибка.Очистить()
$AllGPODisabled=Get-GPO -All -Domain $ThisDomain -Server $PDCServerToConnect | где{ $_.GpoStatus -eq
"Все настройки отключены" }
ЕСЛИ ($Error.count -eq 0)
{
}
еще
{
$ErrorOrNot="Да"
}
ЕСЛИ ($ErrorOrNot -eq "Да")
{
$TestText = "Пожалуйста, убедитесь, что контроллер домена доступен для выполнения Dynamic Pack."
$Сумвал = ""
$TestStatus="Ошибка выполнения динамического пакета."
}
еще
{
$Items = $AllGPODisabled
$ItemCount=$AllGPODisabled.Count
$ Окончательный текст = ""
$SumVal=$ItemCount
ForEach ($ThisItem в $Items)
{
$TotNo++
}
ForEach ($ThisItem в $Items)
{
$FinalVal=$ThisItem.DisplayName+","+$ThisItem.ModificationTime+","+$ThisDomain+", Не в порядке - проверьте, почему это

Объект групповой политики отключен».
Добавить содержимое "$TestCSVFile" $FinalVal
}
ЕСЛИ ($TotNo -ge 0)
{
$TestText = "Некоторые объекты групповой политики полностью отключены в домене AD. Пожалуйста, проверьте, почему эти объекты групповой политики были отключены.
Объекты групповой политики, созданные для целей тестирования, остаются отключенными. Если эти объекты групповой политики подпадают под категорию тестирования, игнорируйте их».
$TestStatus="Высокий"
$SumVal = $TotNo
}
ЕСЛИ ($TotNo -eq 0)
{
$TestText = "Отключенные объекты групповой политики не найдены в доменах AD."
$TestStatus="Пройдено"
$SumVal = $TotNo
}
}
}
$STR = $ADTestName +","+$TestStartTime+","+$TestStatus+","+$SumVal +","+$TestText

### Сценарий заканчивается здесь ###

После завершения выполнения сценария для всех доменов в лесу Active Directory будет создан отчет в файле CSV, как показано на рисунке 1 ниже.

Рис. 1. Отображение отчета GPO CSV, сгенерированного сценарием PowerShell

Как вы можете видеть на снимке экрана выше, скрипт сообщил только об объектах групповой политики, которые были отключены в каждом домене в лесу Active Directory, указанном в переменной « $CurForestName ». Скрипт обнаружил восемь объектов групповой политики в доменах TechGenix.com и WindowsNetworking.TechGenix.com. Сценарий весьма полезен, когда у вас есть сотни объектов групповой политики, настроенных в ваших доменах Active Directory, и вы не знаете, какие из них отключены. Если вы используете профилировщик работоспособности Active Directory, вы можете выполнить для леса Active Directory или домена, а затем отобразить выходные данные динамического пакета в консоли профилировщика работоспособности Active Directory, как показано на рис. 2 ниже.

Рисунок 2. Отображение отчета GPO в консоли AD Health Profiler

Сводка и следующий элемент проверки работоспособности объекта групповой политики

В этой части мы сосредоточились на сборе списка объектов групповой политики, которые были отключены в каждом домене Active Directory. Вы можете включить приведенный выше сценарий PowerShell в процедуру проверки работоспособности Active Directory. В случае возникновения каких-либо проблем при запуске скрипта, отправьте электронное письмо по адресу [email protected].

В следующей части мы собираемся обсудить наш следующий элемент проверки работоспособности GPO, который проверяет состояние резервного копирования GPO и какие методы доступны для резервного копирования GPO.