Как массово изменить область действия групп Active Directory

Обновлено 24.07.2019

Группы ADДобрый день! Уважаемые читатели и гости компьютерного блога Pyatilistnik.org. В прошлый раз я вам подробно рассказал, о группах Active Directory и областях их применения. Там мы разобрали, где и какие из них применяются и в каких ситуациях. Сегодня я хочу поделить, одной практической вещью по решению вот какой задачи, предположим, что у вас есть 100 и более локальных групп безопасности и вам необходимо их преобразовать в универсальные, понятно что можно заняться рутинной работой и сделать все вручную, а можно написать небольшой скрипт на PowerShell и сделать все за пять минут, что я вам и покажу.

Описание задачи

Есть домен root.pyatilistnik.org, который содержит организационное подразделение "Groups" с локальными группами безопасности. Необходимо их быстро преобразовать в универсальные группы и тем самым изменить их область действия в лесу Active Directory.

Изменение области применения групп-01

Когда у вас одна или две группы, то быстро это можно реализовать, через правый клик по нужной группе, выбрав ее свойства, но вот когда их много, у вас отвалится рука и гласа, пока вы все это будите делать.

ручное изменение вида группы безопасности

Изменяем область действия групп через PowerShell

Когда речь идет, о рутинных задачах и автоматизации, то всем приходит на ум язык PowerShell и это нормально, так как Microsoft его с каждым годом улучшает не реальными темпами и он может уже практически все, что вашей душе угодно. Напоминаю, что мы делаем из локальной или глобальной универсальную. Первым делом нам необходимо получить список всех групп в текстовый файл из которого мы потом будем брать данные, сделать это можно командой, открыв оснастку PowerShell:

Import-Module activedirectory

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.

Выгрузка файла с группами Active Directory

  • Как видите у вас создался текстовый файл. Вот его содержимое, тут вам нужно удалить две вещи:
    Во первых Name и ----
  • А так же пробелы они у меня выделены синим

Удаление пробелов в файле с группами AD

Выделяем в одной строке все пробелы

Изменение области применения групп-05

Как от них избавиться, тут нужно воспользоваться заменой в блокноте, в одно поле вы вставляете пустые пробелы во второе ничего и нажимаете заменить все.

Замена пробелов в блокноте

Просто если вы это не сделаете, то получите ошибку:

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

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

Когда файл с нужным значением готов, приступаем к его обработке,

Изменение области применения групп-07

ниже представлен код который вам поможет произвести преобразование групп и изменить их область применения. Вот код скрипта, который вы должны запускать или в 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

}

преобразование локальных групп в универсальные

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

Изменение области применения групп-09

Утилита dsmod

Еще для любителей командной строки Windows, я вспомнил вот такую команду, которая так же может изменить вид группы безопасности и области ее действия:

dsmod group <GroupDN> -scope {L|G|U}

Подробнее про утилиту dsmod (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc732954(v=ws.10)). Чтобы в dsmod вызвать справку, то введите

Справка утилиты dsmod

На этом у меня все, остались вопросы, то пишите их в комментариях, а с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org, до скорых встреч.

Автор - Сёмин Иван

4 Responses to Как массово изменить область действия групп Active Directory

  1. Максим:

    Выражая вам благодарность за полезный скрипт

  2. Letha:

    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

  3. Иван Семин:

    Good afternoon Of course you can share materials

  4. Саня:

    Спасибо, добавил себе в заметки!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *