Active Directory - 所有计算机的查询组

时间:2010-06-03 09:11:08

标签: c# .net active-directory ldap

我正在尝试获取所有已知组成员的计算机列表。我有组GUID,并使用“memberof =”格式构建查询并按ObjectClass过滤。

这样可以正常工作,但如果将计算机的PrimaryGroup属性设置为已知组,则不会返回计算机。在这种情况下,将不会返回该机器。

我已经在以下链接中找到了解释原因的原因(参见Joe Kaplan的回复) http://www.eggheadcafe.com/software/aspnet/29773581/active-directory-query-c.aspx

不幸的是,概述的答案是如何从给定用户获取组列表。我想反过来,从给定的组中获取机器列表。

似乎PrimaryGroup信息存储在机器/用户端,所以我不确定我想做什么是可能的。

我以为我能够查询已知组的TokenGroup属性,然后构造一个查询来返回所有具有TokenGroup属性集的机器,但似乎并非所有组都具有此属性。

有没有人有任何想法或建议?如果需要任何澄清,请告诉我!

非常感谢,

1 个答案:

答案 0 :(得分:0)

解决方案是发出以下查询:

(|(及(对象类=计算机)(的memberOf =))(及(对象类=计算机)(primarygroupid = {1})))

第一部分确保返回属于具有给定guid的组的计算机。第二部分确保返回将primarygroupid设置为给定primarygrouptoken(取自已知组)的计算机。

此查询返回该组的所有计算机!