Элементы проверки работоспособности групповой политики Active Directory (часть 6): соглашение об именовании объектов групповой политики
В предыдущей части этой серии статей мы объяснили, почему важно предоставить текст описания для каждого объекта групповой политики. Важно предоставить описательный текст для каждого объекта групповой политики, если у вас есть сотни объектов групповой политики и несколько ИТ-команд обрабатывают определенные объекты групповой политики. Сценарий PowerShell может помочь вам получить список объектов групповой политики, для которых не задан текст описания, а затем вы можете изменить текст описания для важных объектов групповой политики. В этой части мы предоставим сценарий PowerShell, который можно использовать для сбора объектов групповой политики, не соответствующих стандартам, таких как более длинные имена объектов групповой политики, объекты групповой политики без префикса или суффикса, объекты групповой политики с неверными именами и т. д..
Есть несколько причин, по которым вам необходимо убедиться, что имена объектов групповой политики короче и соответствуют стандартному соглашению об именовании. В большой среде Active Directory с сотнями объектов групповой политики необходимо следовать стандартному соглашению об именах для каждого объекта групповой политики, чтобы ИТ-специалистам было легко идентифицировать объекты групповой политики. Вы можете не захотеть, чтобы ваша ИТ-команда по продажам касалась финансовых объектов групповой политики, и наоборот. Вот где эта статья пригодится. В этой статье мы предоставим сценарий PowerShell, который поможет вам собрать имена объектов групповой политики, длина которых превышает 60 символов, и объекты групповой политики, не соответствующие стандартному соглашению об именовании.
Наш сценарий PowerShell, описанный вкратце, не реализует никаких функций для идентификации объектов групповой политики с любым заданным префиксом или суффиксом, но если вы внедрили какое-либо соглашение об именах для объектов групповой политики, сценарий может помочь вам узнать, какие объекты групповой политики не следуют соглашениям об именах.
После сбора информации об объекте групповой политики с каждого домена вы можете изменить имена объектов групповой политики. Обратите внимание, что при изменении имен объектов групповой политики простоя не будет. Каждый объект в Active Directory, включая имена GPO, идентифицируется по их GUID, а не по именам. Таким образом, такие элементы, как описание объекта групповой политики и имена объектов групповой политики, могут быть изменены без какого-либо влияния на среду Active Directory.
Требования
Перед запуском скрипта убедитесь, что вы соответствуете требованиям, указанным ниже:
- Сценарий PowerShell должен выполняться в операционной системе Windows Server 2012 или более поздней версии.
- Установите модули PowerShell групповой политики, включив функцию GPMC через диспетчер серверов. Обратите внимание, что сценарий PowerShell использует командлет Get-GPO, который является частью функции GPMC.
- Эмулятор PDC для каждого домена должен быть доступен для сбора списка объектов групповой политики. Приведенный ниже сценарий PowerShell собирает объекты групповой политики из каждого домена в домене Active Directory. Для связи с доменом скрипт подключается к эмулятору PDC каждого домена.
Что делает скрипт?
Скрипт выполняет следующие функции:
- Извлекает все домены из текущего леса Active Directory. Вы также можете указать имя леса Active Directory в $CurForestName Текущий лес, который мы используем в сценарии, — «TechGenix.com».
- Подключается к эмулятору PDC каждого домена в Active Directory.
- Выполняет командлет PowerShell Get-GPO для сбора всех объектов групповой политики и их имен.
- Сценарий проверяет, сколько объектов групповой политики превышает 60 символов.
- Выходные данные сценария создаются в файле C:TempGPOsNames.CSV.
### Сценарий начинается здесь ###
$TotNo=0
$ItemCount=0
$ТестТекст = ""
$TestStatus=""
$СумВал = ""
$IsNameOk="Да"
$GDomList = "C:TempDomList.DPC"
Удалить элемент $GDomList -ErrorAction SilentlyContinue
$TestCSVFile = "C:TempGPOsNames.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
ломать
}
}
}
$Ошибка.Очистить()
$AllGPODes = Get-GPO -ALL -Domain $ThisDomain -Server $PDCServerToConnect
ЕСЛИ ($Error.count -eq 0)
{
}
еще
{
$ErrorOrNot="Да"
}
ЕСЛИ ($ErrorOrNot -eq «Да»)
{
$TestText = «Пожалуйста, убедитесь, что контроллер домена доступен для выполнения Dynamic Pack».
$СумВал = ""
$TestStatus="Ошибка выполнения динамического пакета."
}
еще
{
$Items = $AllGPOдес
$ItemCount=$AllGPOdes.Count
$FinalText = ""
$ SumVal = $ Количество предметов
ForEach ($ThisItem в $Items)
{
$RNameNow = ($ThisItem.DisplayName | Measure-Object -Character).Characters
$StatusNow="ОК"
ЕСЛИ ($RNameNow -gt 60)
{
$TotNo++
$IsNameOk="Нет"
$StatusNow="Пожалуйста, убедитесь, что имя GPO соответствует производственному соглашению об именовании."
}
$FinalVal=$ThisDomain+», «+$PDCServerToConnect+», «+$ThisItem.DisplayName+», «+$RNameNow+», «+$StatusNow
Добавить содержимое “$TestCSVFile” $FinalVal
}
ЕСЛИ ($IsNameOk -eq «Нет»)
{
$TestText = «Имена некоторых объектов групповой политики содержат более 60 символов. Рекомендуется использовать более короткие имена GPO».
$ TestStatus = «Средний»
$SumVal = $TotNo
}
ЕСЛИ ($IsNameOk -eq «Да»)
{
$TestText = «Все объекты групповой политики имеют более короткие имена. Однако убедитесь, что все объекты групповой политики соответствуют стандартному соглашению об именах».
$ TestStatus = «Пройдено»
$SumVal = $TotNo
}
}
}
$STR = $ADTestName +",""+$TestStartTime+"",+$TestStatus+"","+$SumVal +"",+$TestText
### Сценарий заканчивается здесь ###
После завершения выполнения скрипта для всех доменов в лесу Active Directory будет создан отчет в файле CSV, как показано на снимке экрана ниже.
Как видно на снимке экрана, сценарий сообщил обо всех объектах групповой политики из каждого домена в лесу Active Directory. Единственная проверка, которую выполняет приведенный выше сценарий PowerShell, — это проверка длины имен объектов групповой политики. Как видно на скриншоте, скрипт сообщил, что у двух объектов групповой политики более длинные имена. Сценарий использует переменную « $CurForestName » для подключения к лесу Active Directory, собирает домены и затем извлекает все объекты групповой политики из каждого домена. Если вы используете профилировщик работоспособности Active Directory, вы можете выполнить для леса Active Directory или домена, а затем отобразить выходные данные динамического пакета в консоли профилировщика работоспособности Active Directory, как показано на снимке экрана ниже.
Сводка и следующий элемент проверки работоспособности объекта групповой политики
В этой части мы сосредоточились на сборе списка объектов групповой политики, не соответствующих производственному соглашению об именовании, и объектов групповой политики, длина которых превышает 60 символов. Вы можете включить приведенный выше сценарий PowerShell в процедуру проверки работоспособности Active Directory. В случае возникновения каких-либо проблем при запуске скрипта, отправьте электронное письмо по адресу [email protected]
В заключительной части этой серии мы объясним настройку блокировки наследования политики и предоставим вам сценарий PowerShell для сбора организационных единиц, для которых установлен параметр блокировки наследования политики.
- Элементы проверки работоспособности групповой политики Active Directory (часть 1)
- Элементы проверки работоспособности групповой политики Active Directory (часть 2)
- Элементы проверки работоспособности групповой политики Active Directory (часть 3)
- Элементы проверки работоспособности групповой политики Active Directory (часть 4)
- Элементы проверки работоспособности групповой политики Active Directory (часть 5)