Как массово изменить область действия групп Active Directory
Добрый день! Уважаемые читатели и гости компьютерного блога Pyatilistnik.org. В прошлый раз я вам подробно рассказал, о группах Active Directory и областях их применения. Там мы разобрали, где и какие из них применяются и в каких ситуациях. Сегодня я хочу поделить, одной практической вещью по решению вот какой задачи, предположим, что у вас есть 100 и более локальных групп безопасности и вам необходимо их преобразовать в универсальные, понятно что можно заняться рутинной работой и сделать все вручную, а можно написать небольшой скрипт на PowerShell и сделать все за пять минут, что я вам и покажу.
Описание задачи
Есть домен root.pyatilistnik.org, который содержит организационное подразделение "Groups" с локальными группами безопасности. Необходимо их быстро преобразовать в универсальные группы и тем самым изменить их область действия в лесу Active Directory.
Когда у вас одна или две группы, то быстро это можно реализовать, через правый клик по нужной группе, выбрав ее свойства, но вот когда их много, у вас отвалится рука и гласа, пока вы все это будите делать.
Изменяем область действия групп через PowerShell
Когда речь идет, о рутинных задачах и автоматизации, то всем приходит на ум язык PowerShell и это нормально, так как Microsoft его с каждым годом улучшает не реальными темпами и он может уже практически все, что вашей душе угодно. Напоминаю, что мы делаем из локальной или глобальной универсальную. Первым делом нам необходимо получить список всех групп в текстовый файл из которого мы потом будем брать данные, сделать это можно командой, открыв оснастку PowerShell:
Get-ADGroup -fi * -SearchBase "OU=Groups,DC=root,DC=pyatilistnik,DC=org" | ft Name | Out-File C:\t1\group.txt
Тут будет выполнен командлет Get-ADGroup (https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-adgroup?view=win10-ps), который выполнит поиск по DistinguishedName вашему организационному подразделению (OU) и выгружает все группы в файл C:\t1\group.txt.
- Как видите у вас создался текстовый файл. Вот его содержимое, тут вам нужно удалить две вещи:
Во первых Name и ---- - А так же пробелы они у меня выделены синим
Выделяем в одной строке все пробелы
Как от них избавиться, тут нужно воспользоваться заменой в блокноте, в одно поле вы вставляете пустые пробелы во второе ничего и нажимаете заменить все.
Просто если вы это не сделаете, то получите ошибку:
строка:10 знак:1
+ Set-ADGroup $GroupName -GroupScope Universal
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:ADGroup) [Set-ADGroup], ADIdentityNotFoundException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundExc
eption,Microsoft.ActiveDirectory.Management.Commands.SetADGroup
Set-ADGroup : Не удается найти объект с удостоверением: "" в "DC=root,DC=pyatilistnik,DC=org".
строка:10 знак:1
+ Set-ADGroup $GroupName -GroupScope Universal
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:ADGroup) [Set-ADGroup], ADIdentityNotFoundException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundExc
eption,Microsoft.ActiveDirectory.Management.Commands.SetADGroup
Когда файл с нужным значением готов, приступаем к его обработке,
ниже представлен код который вам поможет произвести преобразование групп и изменить их область применения. Вот код скрипта, который вы должны запускать или в PowerShell ISE или просто из самой оболочки.
$Filename = "C:\t1\group.txt"
#Цикл для каждой найденной группы
ForEach ( $GroupName in (Get-Content $Filename) )
{
# Изменяем уровень действия группы
Set-ADGroup $GroupName -GroupScope Universal
# Если нужно глобальную преобразовать в локальную, то это делается в два этапа
# Set-ADGroup $GroupName -GroupScope Universal
# Set-ADGroup $GroupName -GroupScope DomainLocal
# Если нужно в глобальную, то пишем Set-ADGroup $GroupName -GroupScope Global
#Вывод измененных групп
# Код взят с https://pyatilistnik.org
$GroupName
}
Проверяем результат нашей работы, как видим локальные группы были преобразованы в универсальные, мы сэкономили кучу времени.
Утилита dsmod
Еще для любителей командной строки Windows, я вспомнил вот такую команду, которая так же может изменить вид группы безопасности и области ее действия:
Подробнее про утилиту dsmod (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc732954(v=ws.10)). Чтобы в dsmod вызвать справку, то введите
На этом у меня все, остались вопросы, то пишите их в комментариях, а с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org, до скорых встреч.
Выражая вам благодарность за полезный скрипт
Good day! Would you mind if I share your blog with my twitter group?
There’s a lot of folks that I think would really enjoy your content.
Please let me know. Many thanks
Good afternoon Of course you can share materials
Спасибо, добавил себе в заметки!