从Active Directory获取用户部门 [英] Getting User Division from Active Directory

查看:67
本文介绍了从Active Directory获取用户部门的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,



我正在尝试从Active Directory获取Get User Division。获得Get User Group会员资格后,我在返回用户部门时遇到问题。我只是寻找唯一的组成员资格来确定用户所属的区域。错误消息在代码下方。



Hello,

I am attempting to get the Get User Division from Active Directory. I am having problem returning the User Division after I get the Get User Group Memberships. I am only looking for the unique group membership to determine what division the User is apart of. Error Message is below the code.

private string GetCurrentDomainPath()
        {
            DirectoryEntry de =
               new DirectoryEntry("LDAP://RootDSE");

            return "LDAP://" +
               de.Properties["defaultNamingContext"][0].
                   ToString();
        }

        private bool DoUserExistingInAD(string strUser)
        {

            bool result = false;

            DirectoryEntry obEntry = new DirectoryEntry(GetCurrentDomainPath());
            DirectorySearcher srch = new DirectorySearcher(obEntry, "(SAccountName=" + strUser + ")");
            SearchResult res = srch.FindOne();
            if (null != res)
            {
                result = true;
            }

            return result;

        }

        private StringCollection GetUserGroupMembership(string strUser)
        {

            StringCollection groups = new StringCollection();
            try
            {

                DirectoryEntry obEntry = new DirectoryEntry(
                GetCurrentDomainPath());
                DirectorySearcher srch = new DirectorySearcher(obEntry,
                    "(SAccountName=" + strUser + ")");
                SearchResult res = srch.FindOne();
                if (null != res)
                {
                    DirectoryEntry obUser = new DirectoryEntry(res.Path);
                    // Invoke Groups method.
                    object obGroups = obUser.Invoke("Groups");
                    foreach (object ob in (IEnumerable)obGroups)
                    {
                        // Create object for each group.
                        DirectoryEntry obGpEntry = new DirectoryEntry(ob);
                        groups.Add(obGpEntry.Name);
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.Write(ex.Message);
            }
            return groups;
        }

  
           private ArrayList  GetUserDivision(String strUser)
           {
          // string[] userGroup;
           ArrayList userGroup = new ArrayList();
           string userGroupTemp = string.Empty;
           string _memberOf = string.Empty;
           

            try {

                foreach (string MemberOf in GetUserGroupMembership(strUser))
                {
                    if (MemberOf.Contains("Cn="))
                    {
                        //User is affiliated with "EASTREGION-W"
                        if (_memberOf.Contains("CN=EASTREGION-W"))
                        {
                            userGroupTemp = "EASTREGION-W";
                            userGroup = userGroupTemp.Split('/').ToArray();
                            return userGroup;
                        }

                        //User is affiliated with "EASTREGION-A"
                        else if (_memberOf.Contains("CN=EASTREGION-A"))
                        {
                            userGroupTemp = "EASTREGION-A";
                            userGroup = userGroupTemp.Split('/').ToArray();
                            return userGroup;
                        }

                        //User is affiliated with "EASTREGION-O"
                        else if (_memberOf.Contains("CN=EASTREGION-O"))
                        {
                            userGroupTemp = "EASTREGION-O";
                            userGroup = userGroupTemp.Split('/').ToArray();
                            return userGroup;
                        }

                        //User is affiliated with "EASTREGION-R"
                        else if (_memberOf.Contains("CN= EASTREGION-R"))
                        {
                            userGroupTemp = "EASTREGION-R";
                            userGroup = userGroupTemp.Split('/').ToArray();
                            return userGroup;
                        }
                        //User is affiliated with "EASTREGION-S"
                        else if (_memberOf.Contains("EASTREGION-S"))
                        {
                            userGroupTemp = "EASTREGION-S";
                            userGroup = userGroupTemp.Split('/').ToArray();
                            return userGroup;
                        }

                    }
                }
            }

            catch (Exception ex)
            {
                Trace.Write(ex.Message);
            } 





string [] string.Split(params char [] separator)(params char [] separator)(+ 5重载)



返回一个字符串数组,其中包含此实例中由指定Unicode字符数组的元素分隔的子字符串。



错误:

无法将类型'string []'隐式转换为'System.Collections.ArrayList'



string[] string.Split(params char[] separator) (params char[] separator) (+5 overload(s))

Returns a string array that contains the substrings in this instance that are delimited by elements of a specified Unicode character array.

Error:
Cannot implicitly convert type 'string[]' to 'System.Collections.ArrayList'

推荐答案

ArrayList是 sooo V1。



但为什么不简单地执行 userGroup.Add(userGroupTemp)
ArrayList is sooo V1.

But why don't you simply do userGroup.Add ( userGroupTemp ) ?


这篇关于从Active Directory获取用户部门的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆