我正在尝试检查用户的Active Directory组。我正在使用我知道的测试用户,而我正在努力使语法正确。
我正在搜索整个域名,而我正在使用的过滤器就是:
(&(objectCategory=user)(CN=windowslogin)(memberof=CN=/#ITTest,OU=Security,OU=Groups,OU=FIRM,DC=our,DC=place,DC=com))
我认为这对组成部分感到窒息,因为如果我删除整个memberof
子句,只搜索整个AD,它就会找到用户。当我尝试添加一个子句来搜索特定的组时,它只会找不到它们。
我尝试过的其他事情:
到目前为止没有运气。
我正在使用专门的工具来执行查询,但我希望它使用的语法足够接近常规命令行,以致有人可能指出我的错误。我也是Active Directory的完全新手,因此可能会出现多个错误。
我意识到这个问题很模糊,但如果有人能提供任何见解,我真的很感激。
答案 0 :(得分:0)
您应该查看System.DirectoryServices.AccountManagement
(S.DS.AM)命名空间。
基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:
// set up domain context - without further parameters, it defaults to the current
// domain you're logged in to, and to the whole AD tree
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// find the group
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupName") as GroupPrincipal;
if(group != null)
{
// get the group members
PrincipalSearchResult<Principal> members = group.GetMembers();
// now you just need to find the user you're looking for
UserPrincipal user = members.ToList().OfType<UserPrincipal>().FirstOrDefault(u => u.DistinguishedName == "CN=YourUserName");
if (user != null)
{
// do something with user
}
}
}
新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!
在这里阅读更多相关信息:
答案 1 :(得分:0)
看来,您正在寻找以下过滤器:
(memberof:1.2.840.113556.1.4.1941:=CN=\#ITTest,OU=Security,OU=Groups,OU=FIRM,DC=our,DC=place,DC=com)
(用反斜杠代替斜线)
这将显示#ITTest组和所有嵌套组的所有成员。然而,这种方法有一些缺点,例如。 G。在企业环境中,它可能会导致一些性能问题
如果您不需要嵌套组搜索,您仍然可以使用memberOf:就像您提供的示例一样