通过LDAP获取AD组的成员间接成员的列表

我在LDAPsearch方面遇到了一些问题,应该指定用户是否是给定AD组的成员(recursion)。

基本上,我正在做的是使用以下参数发出LDAPsearch:

get-aduser -LDAPFilter "(memberof:1.2.840.113556.1.4.1941:={group LDAP path})" -SearchBase "{AD LDAP base}" 

这确实会产生预期的结果:而不是直接或间接地获得所有正在search的用户组,我得到该组的所有直接成员,以及随机select的间接成员(成员组成员search到的组)。

我得到的列表似乎是任意的:我不能find两个用户之间的组成员身份的任何差异,应该出现在结果集中,但一个是在那里,另一个不是。

(我需要用LDAPsearch解决这个问题,因为结果将被用在应用程序中,而不是通过PowerShell,但是通过这种方式使用PowerShell,我可以用上述方法重现原来的问题)。

使用Get-ADGroupMember和-Recursive开关来获取不包含子对象的所有成员的列表。 这将潜入有子对象的成员来获得他们的成员。

 $groupName = "Domain Admins" $group = Get-ADGroup $groupName $groupMembers = Get-ADGroupMember $group -Recursive 

您需要查询组而不是用户,因为由于用户是嵌套组/angular色/等的成员,memberOf可能会产生不一致的结果

get-adobject(而不是get-aduser)会得到相同的结果吗?
或者尝试使用.NET目录search器对象

 $rootDSE = [adsi]"LDAP://RootDSE" $dnDomain = $rootDSE.defaultNamingContext $search = New-Object DirectoryServices.DirectorySearcher([ADSI]"") $search.searchroot = [adsi]"LDAP://$dnDomain" $search.Filter = "(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:={group LDAP path}))" $search.findAll()