Задача:
Необходимо определить является ли текущий пользователь членом определенной группы Active Directory.
Решение:
Код:
Код: Выделить всё
Dim Membership As Boolean 'Объявляем булеву переменную, показывающую является ли пользователь членом группы
On Error Resume Next 'Страхуемся от ошибок
Set objSysInfo = CreateObject("ADSystemInfo") 'Создаем объект objSysInfo
Set objUser = GetObject("LDAP://" & objSysInfo.UserName) 'Создаем объект objUser - текущий пользователь
MsgBox Replace(objUser.userPrincipalName, "@bureau.local", "") 'При необходимости отображаем его в окне MsgBox
Membership = False 'Инициируем начальное значение переменной Membership
For Each strCN In objUser.MemberOf 'Начинаем перебор всех групп, членом которых является текущий пользователь
Set objGroup = GetObject("LDAP://" & strCN) 'Получаем имя группы
If Replace(objGroup.Name, "CN=", "") = "Feemale" Then 'Сравниваем полученное имя группы с искомым (в данном случае «Feemale»), и, если совпало
Membership = True 'Изменяем переменную Membership
MsgBox "Пользователь " & Replace(objUser.userPrincipalName, "@bureau.local", "") & " является членом группы Feemale" 'Выводим соответствующее сообщение
Exit For 'и завершаем For Each
End If
Next
If Membership = False Then MsgBox "Пользователь " & Replace(objUser.userPrincipalName, "@bureau.local", "") & " не является членом группы Feemale" 'Если переменная Membership не изменена, то выводим соответствующее сообщение
Та же самая задача с решением для bat-файла (командной строки) описана в статье Определяем принадлежность пользователя доменной группе
Источник