如何为特定组创建DirectoryEntry

时间:2012-04-02 12:07:47

标签: c# active-directory

我希望获得DirectoryEntry个对象,例如域用户组。我正在关注this link以从特定群组中移除用户。

strGroup = "CN=TestGroup,OU=TestOU";    
objGroup = objADAM.Children.Find(strGroup, "group");

此代码来自MSDN示例。如果我在Active Directory用户和计算机applet中找到我的组,即CN和OU?

编辑: 更一般地说,我在哪里可以找到Find方法的名称?

来自MSDN:

  


  类型:System.String
  要搜索的子目录对象的名称。

这是尊贵的名字还是其他?

1 个答案:

答案 0 :(得分:1)

您正在混合两个共享大量重叠的独立环境。 DirectoryEntry是DirectoryServices包的一部分,GetObject是一个与ActiveDs.dll连接的VBA工具。

如果这需要是可视化基本脚本,那么您将拥有GetObject()或Find()方法的DirectoryEntry等效项。如果需要访问属性,请使用object.Get(“property_name”)方法(返回多值属性的数组)

如果您可以将开发平台交换到.NET,您将可以访问所需的所有DirectoryServices。

编辑:如果这是一个C#.NET应用程序,这里是使用的代码

private static DirectoryEntry getGroupDE(String group)
{
    String adserver = "dc.companyname.com";
    String searchroot = "ou=Groups,dc=companyname,dc=com";
    DirectorySearcher ds = new DirectorySearcher();
    ds.SearchRoot = new DirectoryEntry(String.Format("LDAP://{0}/{1}",adserver,searchroot));
    ds.SearchScope = SearchScope.Subtree;
    ds.Filter = String.Format("(&(objectCategory=group)(sAMAccountName={0}))",group);
    SearchResult sr = ds.FindOne();
    if (sr == null)
    {
        return null;
    }
    return sr.GetDirectoryEntry();
}