根据通配符搜索为用户获取活动目录组

时间:2019-03-26 20:34:53

标签: c# active-directory

我有一个要求,我想根据特定用户的通配符条件来获取特定组。

示例:对于用户james,获取名称以application开头的所有组。

<add key="AdGroupSearchParam" value="Application*;*Groups*;*Managers;" />

代码:我能够基于通配符获得所有组。不知道如何在添加用户名过滤器中修改此代码。

var result = new List<UserGroups>();
string username = "james";
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
    var paramValue = //Get values from file seprated by ';'
    foreach (var search in paramValue)
    {
        GroupPrincipal qbeGroup = new GroupPrincipal(ctx)
        {
            Name = search
        };
        PrincipalSearcher srch = new PrincipalSearcher(qbeGroup);
        foreach (var found in srch.FindAll())
        {
            // Add only if user is part of this group
            result.Add(new UserGroups
            {
                GroupName = found.SamAccountName,
                GroupId = found.Guid.ToString()
            });
        }
    }
}

有什么建议吗?

0 个答案:

没有答案