所以,在递归搜索中涉及的 crazy hyper magic number 在Search Filter Syntax 中有解释。
为了在一次搜索(递归地)找到“user1”是成员的所有组:
- 将基础设置为组容器DN;例如根DN(dc = dom,dc = fr)
- 将范围设置为子树
- 使用以下过滤器:
(member:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)
使用 Windows Server 中包含的命令行工具 LDIFDE.EXE 明确说明如下:
ldifde -f user1Grps.ldf -d "dc=societe,dc=local" -r "(member:1.2.840.113556.1.4.1941:=cn=user1,ou=Monou,dc=societe,dc=local)"
如果您正在运行此操作在W2K8或W2K8 R2服务器上,请小心以管理员身份运行。
如果您在使用C#编程,您可以使用以下代码:
/* Retreiving a principal context
*/
Console.WriteLine("Retreiving a principal context");
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "WM2008R2ENT:389", "dc=dom,dc=fr", "jpb", "PWD");
/* Look for all the groups a user belongs to
*/
UserPrincipal aUser = UserPrincipal.FindByIdentity(domainContext, "user1");
PrincipalSearchResult<Principal> a = aUser.GetAuthorizationGroups();
foreach (GroupPrincipal gTmp in a)
{
Console.WriteLine(gTmp.Name);
}