Копирование членов группы AD в группу другого домена
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз я вам показал решение ситуации, когда у нас был диск защищенный от записи и как снять защиту с с такой usb флешки. В сегодняшней статье я хочу вам показать готовые сценарии, которые решают задачу по копированию членов группы Active Directory из одного домена в группу безопасности другого домена, так сказать копирование списка в рамках леса. Думаю, что это частая практическая задача.
Постановка задачи
У меня есть лес Active Directory root.pyatilistnik.org. В рамках леса есть два домена root и child. Появилась задача из группы Root-Terminal-Users в домене Root скопировать всех ее участников в группу Child-Terminal-Users из домена Child. Я хочу вам показать ряд методов позволяющих это осуществить за пару минут. Вообще удобно иметь под рукой такие готовые решения.
Методы копирования участников одной группы AD в другую
- Самым основным и современным методом является использование PowerShell, думаю тут ни у кого не будет возражений
- Использование утилит командной строки dsget group и dsmod group
Копирование участников группы Active Directory в рамках леса
Сначала я рассмотрю копирование из одного домена в дугой в рамках леса, а ниже потом приведу примеры решений если у вас один лес и один домен.
Для начала я хочу отдать дань памяти утилитам dsget group и dsmod group. Перед тем как производить копирование нам необходимо узнать distinguishedName у каждой группы, как это делается смотрите по ссылке слева, лично я люблю использовать ADSIEdit или ADUC.
Вот distinguishedName для Root-Terminal-Users
Вот distinguishedName для Child-Terminal-Users
Вот как выглядят сейчас данные группы безопасности.
Далее открываем cmd в режиме администратора (Как открыть командную строку в данном режиме, я уже писал). Пишем команду, подставив естественно свои данные, первой идет группа откуда будет копироваться список пользователей у меня это Root-Terminal-Users, вторым идет группа назначения, у меня это Child-Terminal-Users
У вас может выскочить ошибка:
Связано это с тем, что группа назначения Child-Terminal-Users имеет область действия (Глобальная), ее нужно изменить на локальную или универсальную.
Пробуем еще раз выполнить и все успешно отрабатывает.
По результату видим, что в группе Child-Terminal-Users появились нужные пользователи.
Второй вариант сделать полную копию участников группы, это воспользоваться PowerShell. Чтобы у вас была возможность между разными доменами леса копировать списки пользователей, выполните:
$group_source = Get-ADGroup "Root-Terminal-Users" -Server "dc01.root.pyatilistnik.org"
$group_destination = Get-ADGroup "Child-Terminal-Users" -Server "dc03.child.root.pyatilistnik.org"
foreach ($user in (Get-ADGroupMember $group_source))
{
Add-ADGroupMember $group_destination -Members $user}
Не забываем в скрипте указать свои данные.
Копирование участников группы Active Directory в рамках одного домена
Ну и теперь список попсовых вариантов для одного домена. В качестве теста группой источника будет Root-Terminal-Users, а группой назначения IT-Terminal-Users. Запустите PowerShell и введите:
Обратите внимание, что сначала идет группа откуда идет копирование списка членов группы, а потом уже группа куда идет копирование. Все успешно отработало.
Еще один вариант в PowerShell введите:
Тут первой указывается источник (Root-Terminal-Users), потом куда копируем (IT-Terminal-Users).
Вот еще вариант:
И еще конструкция:
$gtarget = "IT-Terminal-Users"
Get-ADGroupMember -Identity $gsource |
foreach {
Add-ADGroupMember -Identity $gtarget -Members $($_.DistinguishedName)
}
Если кто-то любит LDAP, то вы так же можете его указать, и произвести копирование членов группы в другую группу с его помощью. Конструкция примет вид:
$Destination_Group = "CN=IT-Terminal-Users,OU=Группы,OU=Оргструктура,DC=root,DC=pyatilistnik,DC=org"
$Target = Get-ADGroupMember -Identity $Source_Group
foreach ($Person in $Target) {
Add-ADGroupMember -Identity $Destination_Group -Members $Person.distinguishedname
}
Этот простой сценарий позволяет копировать пользователей, принадлежащих к исходной группе, в целевую группу.
$Distination = [ADSI]"LDAP://CN=IT-Terminal-Users,OU=Группы,OU=Оргструктура,DC=root,DC=pyatilistnik,DC=org"
ForEach ($GroupDN In $Sourse.member)
{
$Object = [ADSI]"LDAP://$GroupDN"
# Check if object is already a member of this group.
If ($Object.IsMember($Distination.ADsPath) -eq $False)
{
$Object.Add($Distination.ADsPath)
"Object added to group $GroupDN"
}
Else
{
"Object already member of group $GroupDN"
}
}
Совсем сложный метод копирования участников группы в другую группу
Данный метод подразумевает, что вы делаете выгрузку пользователей по SamAccountName
Далее открываете свойства группы назначения и добавляете список.
На этом у меня все. Я попытался вам собрать все возможные варианты по копированию списка пользователей из одной группы Active Directory в другую. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.