У меня есть макрос в Excel, который я периодически использую, чтобы вытащить детали членов группы в Active Directory. Он отлично работает для каждой группы, которую я пробовал, но я столкнулся с одной группой, на которой я просто не могу получить данные.Запрос LDAP не может найти определенную группу в Active Directory
Соответствующий бит сценария ниже:
Set rootDSE = GetObject("LDAP://[MyDomain.co.uk]/RootDSE")
DomainContainer = rootDSE.Get("defaultNamingContext")
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADSDSOObject"
conn.Open "ADs Provider"
Set command = CreateObject("ADODB.Command")
Set command.ActiveConnection = conn
command.Properties("Page size") = 200
groupDistinguisedName = "CN=[Group Name],OU=xxx,OU=xxx,DC=MyDomain,DC=co,DC=uk"
command.CommandText = "<LDAP://" & DomainContainer & ">;(distinguishedName=" & groupDistinguisedName & ");member;subtree"
Set rs = command.Execute
On Error Resume Next
dataVal = rs.Fields("member").Value
Я попытался запустить скрипт с именем группы, что не существует и сценарий ведет себя по-другому - dataVal устанавливается в Пусто, если группа не существует, но установлена в Null для группы У меня проблемы с, так что, похоже, что она нашла группу, но каким-то образом не может получить членов группы.
Я пробовал вырезать и вставлять отличительное имя непосредственно из Active Directory в командную строку LDAP, поэтому я знаю, что это не опечатка имени. Эта группа - большая группа с большим количеством участников, но я тоже пробовал другие большие группы. Я просто не вижу, что может вызвать проблему. Есть идеи?
Мой VBScript не так уж хорош, поэтому макрос, который я использую, с тех пор связан с различными источниками из разных источников. Атрибут primaryGroupToken не полезен в моем случае, так как мне нужно перечислить членов любой группы, а не только основную группу. Я хотел бы посмотреть, как использовать GetObject, как было предложено, если бы вы могли предоставить мне более подробную информацию (хотя производительность пока не была проблемой). Поиск диапазона - это именно та проблема, с которой я столкнулся - атрибут * members * был нулевым, потому что было более 1500 членов. Спасибо! – paulH
Пожалуйста, проверьте это [ссылка] (http://msdn.microsoft.com/en-us/library/aa746518 (v = vs.85) .aspx) для того, как выполнять поиск Range в VB. – baldpate
Кроме того, теоретически, чтобы показать всех членов группы, вам нужно будет проверить как основную группу, так и «нормальную» группу. Это означает, что вы не можете получить первичные члены группы из атрибута «member» или наоборот. Но в большинстве случаев только некоторые специальные группы (например, пользователи домена) имеют первичный член группы. Вы можете обрабатывать оба или опустить членство в первичной группе на основе вашего варианта использования. – baldpate