Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Active Directory组_C#_Asp.net_Active Directory - Fatal编程技术网

C# Active Directory组

C# Active Directory组,c#,asp.net,active-directory,C#,Asp.net,Active Directory,我试图在广告中得到一份安全组织的名单,但我运气不太好。 当我检查Active Directory用户和计算机MMC时,我看到: blah.blah.com (top) Group 1 Group1_1 Group1_2 Group1_2_1 Group2 等等。 我需要的是Group1_2_1中的所有安全组 我尝试使用DirectoryEntry和DirectorySearcher,使用&objectClass=group作为搜索过滤器,但我得到了在Active Directo

我试图在广告中得到一份安全组织的名单,但我运气不太好。 当我检查Active Directory用户和计算机MMC时,我看到:

blah.blah.com (top)
Group 1
  Group1_1
  Group1_2
    Group1_2_1
Group2
等等。 我需要的是Group1_2_1中的所有安全组 我尝试使用DirectoryEntry和DirectorySearcher,使用&objectClass=group作为搜索过滤器,但我得到了在Active Directory用户和计算机中甚至找不到的东西

这是我用C代码编写的:

        // Binding path. 
        string strPath = "LDAP://<domain_name>.ABC.DEF.COM";

        // Binding object. 
        DirectoryEntry objADAM = default(DirectoryEntry);
        // Group Results. 
        DirectoryEntry objGroupEntry = default(DirectoryEntry);
        // Search object. 
        DirectorySearcher objSearchADAM = default(DirectorySearcher);
        // Results collection. 
        SearchResultCollection objSearchResults = default(SearchResultCollection);
        // Construct the binding string. 
        List<string> result = new List<string>();            

        // Get the AD LDS object. 
        try
        {
            objADAM = new DirectoryEntry(strPath);
            objADAM.RefreshCache();
        }
        catch (Exception e)
        {
            throw e;
        }

        // Get search object, specify filter and scope, 
        // perform search. 
        try
        {
            objSearchADAM = new DirectorySearcher(objADAM);
            objSearchADAM.Filter = "Group1_2_1 (groupType:1.2.840.113556.1.4.803:=2147483648)";
            //objSearchADAM.Filter = "(&(objectCategory=group)(OU=Group1_2)(OU=Group1_2_1))";
            objSearchADAM.SearchScope = SearchScope.Subtree;
            objSearchResults = objSearchADAM.FindAll();
        }
谢谢。

试试: 将基础设置为: 第1组第2组第1组 组类型:1.2.840.113556.1.4.803:=2147483648

为了
-jim

如果这仅适用于单用户安全组,则下面是一行PowerShell脚本

Get-ADPrincipalGroupMembership -Identity >samaccount< | Where-Object {$_.distinguishedname -notcontains "config"}| Where-Object {$_.GroupCategory -notmatch "distribution"} | select name
这将首先获得用户的完整成员资格->然后删除“配置”组的成员资格->然后过滤出通讯组->最后只提供安全组的名称

问候,,
阿维塞克

谢谢你,吉姆。我试过了,但搜索结果仍然是0。我编辑了原文以显示我的代码。对不起,我现在不能测试任何c代码。我建议您从LDAP浏览器执行搜索,并使其按您想要的方式工作。然后转到代码。这是有效的:我必须使用LDAP://.ABC.DCE.COM/OU=Group1_1,OU=Group1_1_2,DC=,DC=ABC,DC=DEF,DC=COM作为DirectoryEntry的路径字符串,即代码中的strPath变量,然后只使用objectcategory=group作为搜索过滤器。用字符串替换objectcategory=group也有效。