LDAP查询无法在Active Directory中找到特定组

时间:2014-11-27 18:05:19

标签: active-directory ldap

我在Excel中有一个宏,我定期用它来提取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命令字符串中,因此我知道它不是名称上的拼写错误。这个群体是一个拥有大量成员的大型团体,但我也尝试过其他大型团体。我无法看到可能导致问题的原因。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

&#34;成员&#34;属性不包括主要组成员的成员 例如&#34;域用户&#34;团体可能有很多成员,但其成员&#34;属性可以为空。

要检查主要组成员身份,请使用primaryGroupToken(group)和primaryGroupId(user)属性。

  • 从组中获取primaryGroupToken属性的值 (注意,primaryGroupToken是一个构造的属性)
  • SAME DOMAIN 中搜索在primaryGroupId中具有相同值的所有用户

e.g。 &#34;域用户&#34; groupGroupToken中的值为513。 这意味着同一域中的任何用户对象,其primaryGroupId = 513是此&#34; Domain Users&#34;的成员。基。

其他评论:

  • 您已经知道DN和服务器。为什么不直接致电GetObject("LDAP://[MyDomain.co.uk]/" & groupDistinguisedName)来获取小组? distinguishedName属性未编入索引。大型环境中的查询可能很慢。
  • 如果&#34;成员&#34;中有&gt; 1500(可配置)成员属性,您需要使用范围检索。否则你只能得到1500.