使用ManagedBy属性的Active Directory C#

时间:2011-08-08 13:50:50

标签: active-directory

我们有几个呼叫中心,每个呼叫中​​心在Active Directory中都有自己的组,其中包含在该呼叫中心工作的所有座席。在那里,呼叫中心可能有多个主管,所以我在我们的服务台找到了一个人来设置这样的活动目录:

亚特兰大呼叫中心

  • 剂1
  • Agent2
  • Agent3

然后:

亚特兰大呼叫中心 - 主管

  • Supervisor1
  • Supervisor2

呼叫中心小组的managedBy属性设置为主管小组。

目前,我必须使用主管组的完整distinguishedname进行查询。

我想在登录的主管上运行查询,以获取该主管的组名managedBy。有关更好方法的任何建议。我实际上让网络管理员现在正在研究这个问题。我认为他知道该怎么做,但我已经输入了这个,所以我会看到你们说的话。

这就是我们的网络管理员刚才就此问题所说的内容。

在AD中使用OU的属性不是处理此类问题的好方法。该问题应仅通过组和用户处理。为了管理目的,OU应该用于对象的逻辑组织。

Label1.Text = getCallCenterGroup("CN=******Supervisors,OU=Groups,OU=*******,OU=Locations,DC=******,DC=local");

protected string getCallCenterGroup(string user)
{
        DirectoryEntry searchRoot = new DirectoryEntry("LDAP://******");
        DirectorySearcher search = new DirectorySearcher(searchRoot);

        search.Filter = "(managedBy=" + user + ")";
        search.PropertiesToLoad.Add("managedBy");
        search.PropertiesToLoad.Add("distinguishedName");
        search.PropertiesToLoad.Add("cn");

        SearchResultCollection groups = search.FindAll();

        foreach (SearchResult sr in groups)
        {
            return sr.Properties["cn"][0].ToString();
        }

        return null;
    }

1 个答案:

答案 0 :(得分:0)

managedBy是一个链接属性,因此您可以查询的唯一语法是您要匹配的对象的DN。我不确定这是不是问题,或者我是否误解了。

在一个单独的主题上,我不同意你的网络管理员关于不扩展OU,但是,这是一个单独的讨论。