Было бы полезно узнать, как вы хотите взаимодействовать с AD - писать программу (язык?) Или использовать клиент LDAP (какой?). Я предоставлю информацию об использовании ldifde.exe из инструментов удаленного администрирования сервера. Чтобы получить список DN, которые входят в другую группу и , имеют определенный заголовок, используйте фильтр с заголовком и требованием к членству
ldifde -f output.txt -r "(&(title=Desired Title)(memberOf=cn=GroupName,ou=Groups,dc=example,dc=com))" -l "NULL"
Возвращает пользовательские записи, которые являются прямыми членами указанной группы (вам понадобится полное имя LDAP группы, подстановочные знаки не поддерживаются для memberOf - в качестве примера можно привести группу с именем «GroupName» в подразделении, называемом «Группы» в корне нашей AD example.com).
Затем вам нужно создать новую группу с идентифицированными DN пользователей в качестве участников. В файле output.txt будет много строк с надписью «changetype: add \ n \ n» ... избавьтесь от них, чтобы у вас были только DN. Измените «dn:» на «member:». Добавьте следующую информацию к списку членов группы, чтобы создать файл LDIF для создания новой глобальной группы безопасности:
dn: CN=GroupName,OU=Groups,dc=example,dc=com
changetype: add
objectClass: group
cn: GroupName
distinguishedName: CN=GroupName,OU=Groups,dc=example,dc=com
instanceType: 4
name: GroupName
sAMAccountName: GroupName
groupType: -2147483646
objectCategory: CN=Group,CN=Schema,CN=Configuration,dc=example,dc=com
member: CN=Person1,OU=ResourceUsers,dc=example,dc=com
member: CN=Person2,OU=ResourceUsers,dc=example,dc=com
member: CN=Person3,OU=ResourceUsers,dc=example,dc=com
member: CN=Person4,OU=ResourceUsers,dc=example,dc=com
member: CN=Person5,OU=ResourceUsers,dc=example,dc=com
Импортировать файл LDIF, используя:
ldifde -i -v -k -y -f output.txt
Группа будет создана и заполнена учетными записями, перечисленными в атрибуте "member".
Это ничего не даст, если вы добавите нового человека в первую группу с нужным названием - это одноразовый снимок. Вы можете легко определить людей, которых следует добавить / удалить из второй группы
Необходимо добавить - любой с нужным названием, который является членом SourceGroupName, но не является членом CreatedGroupName:
(&(title=Desired Title)(memberOf=cn=SourceGroupName,ou=Groups,dc=example,dc=com)(!(memberOf=cn=CreatedGroupName,ou=Groups,dc=example,dc=com)))
Необходимо удалить - любой, кто является членом CreatedGroupName, не является членом SourceGroupName или не имеет желаемого заголовка.
(&(memberOf=cn=CreatedGroupName,ou=Groups,dc=example,dc=com)(|(!(title=Desired Title))(!(memberOf=cn=SourceGroupName,ou=Groups,dc=example,dc=com))))
Добавить / удалить участников из новой группы, поскольку индивидуумы соответствуют одному из этих двух фильтров.