2012-04-02 20 views
1

我想获得DirectoryEntry对象,域用户组。我正在关注this link以从某个群组中移除用户。如何为特定组创建DirectoryEntry

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

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

编辑: 为了更一般,我在哪里可以找到Find方法的名字?

从MSDN:


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

这是专有名称还是其他?

+0

看一看我的[海狸ADSI浏览器](代码http://adsi.mvps.org/adsi/CSharp /beavertail.html) - 它显示了AD层次结构以及LDAP路径的所有相关信息。 – 2012-04-02 12:12:35

+0

'strGroup'是否是专有名称?像CN = Domain-Users,CN = Users,DC = test1'? – Tschareck 2012-04-02 12:31:30

+0

“名称”实际上应该是其容器内对象的“本地”名称。所以它可能是'OU = TestOU'容器内的CN = TestGroup'或其他东西。它只是您要查找的对象的本地名称 - 只是本地名称,*不是*整个长LDAP路径.... – 2012-04-02 13:38:22

回答

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(); 
} 
+0

不,这是C#中.NET应用程序的一部分。 – Tschareck 2012-04-03 06:49:25

+0

如果这是.NET和C#我会使用DirectorySearcher。让我为你添加一些代码到上面的帖子。 – Kodra 2012-04-04 14:39:43