zoukankan      html  css  js  c++  java
  • AD,Group

                DataTable dtUser = GetEmptyDT();
    
                Dictionary<DirectoryEntry, string> test1 = GetUserAndGroup(clsConst.enumADName.AD_1);
    
                foreach (DirectoryEntry deUser in test1.Keys)
                {
                    string groupname = test1[deUser];
                    string sAMAccountName = GetProperty(deUser, "sAMAccountName");
                    string mail = GetProperty(deUser, "mail");
                    string department = GetProperty(deUser, "Department");
                    string displayName = GetProperty(deUser, "displayName");
                    string givenName = GetProperty(deUser, "givenName");
                    string sn = GetProperty(deUser, "sn");
    
                    DataRow dr = dtUser.NewRow();
                    dr["ADName"] = clsConst.enumADName.AD_1;
                    dr["GroupName"] = groupname;
                    dr["LoginName"] = sAMAccountName;
                    dr["Department"] = department;
                    dr["MailAddress"] = mail;
                    dr["DisplayName"] = displayName;
                    dr["FirstName"] = givenName;
                    dr["LastName"] = sn;
                    dtUser.Rows.Add(dr);
                }
    
                ExportLog(dtUser, "UserInformation_log", ConfigurationManager.AppSettings["UserInformationPath"]);
    
    
    
            public static Dictionary<DirectoryEntry, string> GetUserAndGroup(string ADName)
            {
                string[] GroupName = { string.Empty };
                string path = string.Empty;
                string username = string.Empty;
                string password = string.Empty;
                if (ADName.Equals(clsConst.enumADName.AD_1))
                {
                    path = ConfigurationManager.AppSettings["1Path"];
                    username = ConfigurationManager.AppSettings["1UserName"];
                    password = ConfigurationManager.AppSettings["1Password"];
                    GroupName = ConfigurationManager.AppSettings["1Groups"].Split(',');
                }
                if (ADName.Equals(clsConst.enumADName.AD_2))
                {
                    path = ConfigurationManager.AppSettings["2Path"];
                    username = ConfigurationManager.AppSettings["2UserName"];
                    password = ConfigurationManager.AppSettings["2Password"];
                    GroupName = ConfigurationManager.AppSettings["2Groups"].Split(',');
                }
                if (ADName.Equals(clsConst.enumADName.AD_3))
                {
                    path = ConfigurationManager.AppSettings["3Path"];
                    username = ConfigurationManager.AppSettings["3UserName"];
                    password = ConfigurationManager.AppSettings["3Password"];
                    GroupName = ConfigurationManager.AppSettings["3Groups"].Split(',');
                }
    
                List<SearchResult> results = new List<SearchResult>();
                DirectoryEntry de = GetDirectoryObject(ADName);
    
                DirectorySearcher deSearch = new DirectorySearcher();
    
                deSearch.SearchRoot = de;
                string strFilter = string.Empty;
                if (GroupName.Length <= 0)
                {
                    return null;
                }
                strFilter = "(&(objectClass=group){0}(cn=" + GroupName[0] + "){1})";
                string s1 = string.Empty;
                string s2 = string.Empty;
                if (GroupName.Length > 1)
                {
                    s1 = "(|";
                    for (int i = 1; i < GroupName.Length; i++)
                    {
                        s2 += "(cn=" + GroupName[i] + ")";
                    }
                    s2 += ")";
                }
                strFilter = string.Format(strFilter, s1, s2);
    
                deSearch.Filter = strFilter;
                deSearch.SearchScope = SearchScope.Subtree;
                SearchResultCollection searchResults = deSearch.FindAll();
    
                Dictionary<DirectoryEntry, string> groupAndUser = new Dictionary<DirectoryEntry, string>();
    
    
                List<string> dnstr = new List<string>();
                foreach (SearchResult searchResult in searchResults)
                {
                    
                    DirectoryEntry deGroup = new DirectoryEntry(searchResult.Path, username, password, AuthenticationTypes.Secure);
                    System.DirectoryServices.PropertyCollection pcoll = deGroup.Properties;
                    int n = pcoll["member"].Count;
    
                    for (int l = 0; l < n; l++)
                    {
                        DirectoryEntry deUser = new DirectoryEntry(path + "/" + pcoll["member"][l].ToString(), username, password, AuthenticationTypes.Secure);
                        string dn = deUser.Properties["distinguishedName"][0].ToString();
                        if (!dnstr.Contains(dn))
                        {
                            dnstr.Add(dn);
                            groupAndUser.Add(deUser,deGroup.Name.Remove(0,3));
                        }
                    }
    
                }
                return groupAndUser;
            }
  • 相关阅读:
    Android学习之天气预报简单版
    Android学习之Json数据的获取与解析
    getPath()返回路径包含的“%20”(空格)的处理
    自学php 之数据库连接编程
    bnuoj 1071 拼图++
    hdu 2489 Minimal Ratio Tree
    hdu 4720 Naive and Silly Muggles
    hdu 4725 The Shortest Path in Nya Graph
    经典算法学习:排序之希尔排序(壳排序)
    经典算法学习:排序之插入排序
  • 原文地址:https://www.cnblogs.com/wodegui/p/4898652.html
Copyright © 2011-2022 走看看