Тема: VBS: AD изменить тип групп
В одной OU в AD находится около 5000 групп, почти все они Security - Global, но есть и Security - Domain Local
Надо все глобальные группы перевести в универсальные, это сделать просто таким скриптом
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &H8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &H80000000
Set objGroup = GetObject("LDAP://OU=test,OU=Groups,dc=Fabricam,dc=Com")
objGroup.Filter = Array("group")
For Each Group in objGroup
intgroupType = Group.Get("groupType")
if intgroupType AND ADS_GROUP_TYPE_GLOBAL_GROUP then
if intgroupType AND ADS_GROUP_TYPE_SECURITY_ENABLED then
Group.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP OR ADS_GROUP_TYPE_SECURITY_ENABLED
else
Group.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP
end if
end if
Group.SetInfo
next
wscript.quitНо когда групп много и почти все входят друг в друга возникают сложности.
Дело в том, что преобразовать из глобальной в универсальную. можно, только если изменяемая группа не является членом другой группы с глобальной областью действия.
Поэтому нужна Ваша помощь.
Пока вижу только такой алгоритм.
1)Найти группы которые никуда не включены (MembersOf - пусто), и преобразовать в универсальные
2)Найти группы которые включены в группы, которые не являются глобальными
3)Найти группы которые включены в группы из 1) и 2) и преобразовать в универсальные
4)Повторять 3 и расширением поиска на результат 3)
Помогите с кодом нахождения групп 1) и 2) и возможно стоит пересмотреть алгоритм.

