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 <= )
{
return null;
}
strFilter = "(&(objectClass=group){0}(cn=" + GroupName[] + "){1})";
string s1 = string.Empty;
string s2 = string.Empty;
if (GroupName.Length > )
{
s1 = "(|";
for (int i = ; 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 = ; l < n; l++)
{
DirectoryEntry deUser = new DirectoryEntry(path + "/" + pcoll["member"][l].ToString(), username, password, AuthenticationTypes.Secure);
string dn = deUser.Properties["distinguishedName"][].ToString();
if (!dnstr.Contains(dn))
{
dnstr.Add(dn);
groupAndUser.Add(deUser,deGroup.Name.Remove(,));
}
} }
return groupAndUser;
}

AD,Group的更多相关文章

  1. 【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

    问题描述 为APIM添加AAD Group时候,等待很长很长的时间,结果添加失败.错误消息为: Write Groups ValidationError :Failed to query Azure ...

  2. SharePoint 2103 Check user permission on list

    一.需求: check user 对SharePoint list 的permission 代码如下: private static string GetListPermission(SPList l ...

  3. Integrating SharePoint 2013 with ADFS and Shibboleth

    Time again to attempt to implement that exciting technology, Federation Services (Web Single Sign On ...

  4. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q69-Q71)

    Question 69 You are designing an extranet site using SharePoint 2010. This site must allow employees ...

  5. 通过SEP禁用USB

    1      Introduction 1.1      Scope This document provides comprehensive information of the reinforce ...

  6. SharePoint 2013 Nintex Workflow 工作流帮助(十三)

    博客地址 http://blog.csdn.net/foxdave 工作流动作 35. Delegate Workflow Task(User interaction分组) 该操作将委托未处理的工作流 ...

  7. SharePoint 2013 Nintex Workflow 工作流帮助(九)

    博客地址 http://blog.csdn.net/foxdave 前叙:假期结束了,知道为什么假期如此短暂吗?因为假期的每天只有半天.春节过完了,新的一年开始了,大家或许之前在新年的时候都许下了自己 ...

  8. SharePoint 2013 Nintex Workflow 工作流帮助(二)

    博客地址 http://blog.csdn.net/foxdave 工作流动作 1. Action Set(Logic and flow分组) 它是一个工作流的集合,可以理解为容器的东西.所以它本身并 ...

  9. SharePoint Security and Permission System Overview

    转:http://www.sharepointblues.com/2010/09/01/sharepoint-security-and-permission-system-overview/ Shar ...

随机推荐

  1. BBSXP最新漏洞 简单注入检測 万能password

    BBSXP最新漏洞 漏洞日期:2005年7月1日受害版本号:眼下全部BBSXP漏洞利用:查前台password注入语句:blog.asp?id=1%20union%20select%201,1,use ...

  2. SPOJ - OTOCI LCT

    OTOCI Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/viewProblem. ...

  3. WINAPI 变量(2861个)

    WINAPI 变量(2861个)   这是从 c:\Program Files\Windows Kits\8.1\Include\um\WinUser.h 这个文件 中提取的 CTRL+F 查看变量所 ...

  4. Disruptor框架

    http://developer.51cto.com/art/201306/399370.htm

  5. javascript的函数传参(没有引用传递只有值传递)

    var v1 = [] var v2 = {}; var v3 = {}; function foo(v1, v2, v3){    v1 = [1];    v2 = [2];    v3 = {a ...

  6. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

  7. MySQL - 启停服务

    Windows 环境 命令行方式 启动 MySQL 服务: net start mysql停止 MySQL 服务: net stop mysql 注:需要以管理员身份启动 cmd 后再执行上述命令. ...

  8. c# xml 解析取值

    //字符串 string result = "<?xml version=\"1.0\" encoding=\"utf-8\"?>< ...

  9. C#学习笔记12:枚举、结构、数组基础学习

    枚举:public enum MyEnum { 值1, 值2, 值3 } Public enum Season { 春, 夏, 秋, 冬 } 枚举的作用:规范用户的输入,枚举可以转换为int类型,可以 ...

  10. 崩溃信息:Message from debugger: Terminated due to signal 9

    是因为你在调试的时候主动了结束了程度,如上滑结束了程序