检索(AD)属性

时间:2018-04-20 13:47:06

标签: c# active-directory

我需要检索有关用户会员资格的完整信息。这是在SSIS(Microsoft Visual Studio 10)中使用C#编写的脚本转换编辑器组件编写的。

顺便说一下,如果我们使用dsget user "cn=...." -memberof检索,在CONSOLE(cmd)中我能够检索用户的所有组...

我想要的是获得会员资格:

  

CN = NAME1,OU = WZA,OU = WWWWW,DC = XXXX,DC = YYYY,DC = ZZZZ   CN =名称2,OU = WZA,OU = WWWWW,DC = XXXX,DC = YYYY,DC = ZZZY   CN = NAME3,OU = WZA,OU = WWWWW,DC = XXXX,DC = YYYY,DC = ZZZA

我得到的:(只有第一行...)

  

CN = NAME1,OU = WZA,OU = WWWWW,DC = XXXX,DC = YYYY,DC = ZZZZ

代码如下。如何更改它以接收AD在 memberOf 属性中保存的完整信息? (在SSIS中,属性具有unicode字符串的数据类型,其中3999个字符设置为最大值,因此很难发生截断)

public class ScriptMain : UserComponent
{

    public override void CreateNewOutputRows()
    {
        string directory = Variables.LDAPConnection;
        string filter = Variables.LDAPFilter;
        string[] desiredAttributes = { "memberOf", 
                                         "displayname" 
                                         };

        using (DirectoryEntry searchRoot = new DirectoryEntry(directory))
        using (DirectorySearcher searcher = new DirectorySearcher(searchRoot, filter, desiredAttributes))
        {
            searcher.PageSize = 100;
            searcher.SearchScope = SearchScope.Subtree;
            searcher.ReferralChasing = ReferralChasingOption.All;


            using (SearchResultCollection results = searcher.FindAll())
            {
                foreach (SearchResult result in results)
                {
                    Output0Buffer.AddRow();

                    if (result.Properties["memberOf"] != null && result.Properties["memberOf"].Count > 0)
                    {
                        Output0Buffer.memberOf= result.Properties["memberOf"][0].ToString();
                    }

                    if (result.Properties["displayname"] != null && result.Properties["displayname"].Count > 0)
                    {
                        Output0Buffer.displayname = result.Properties["displayname"][0].ToString();
                    }                    

                }
            }
        }

        Output0Buffer.SetEndOfRowset();
    }   

}

ps我不太了解C#...

1 个答案:

答案 0 :(得分:1)

您只使用display属性中的第一条记录:

!important

memberOf是一个数组。因此,您必须遍历该数组并获取每个值。

相关问题