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 <= )
{
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的更多相关文章
- 【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 ...
- SharePoint 2103 Check user permission on list
一.需求: check user 对SharePoint list 的permission 代码如下: private static string GetListPermission(SPList l ...
- Integrating SharePoint 2013 with ADFS and Shibboleth
Time again to attempt to implement that exciting technology, Federation Services (Web Single Sign On ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q69-Q71)
Question 69 You are designing an extranet site using SharePoint 2010. This site must allow employees ...
- 通过SEP禁用USB
1 Introduction 1.1 Scope This document provides comprehensive information of the reinforce ...
- SharePoint 2013 Nintex Workflow 工作流帮助(十三)
博客地址 http://blog.csdn.net/foxdave 工作流动作 35. Delegate Workflow Task(User interaction分组) 该操作将委托未处理的工作流 ...
- SharePoint 2013 Nintex Workflow 工作流帮助(九)
博客地址 http://blog.csdn.net/foxdave 前叙:假期结束了,知道为什么假期如此短暂吗?因为假期的每天只有半天.春节过完了,新的一年开始了,大家或许之前在新年的时候都许下了自己 ...
- SharePoint 2013 Nintex Workflow 工作流帮助(二)
博客地址 http://blog.csdn.net/foxdave 工作流动作 1. Action Set(Logic and flow分组) 它是一个工作流的集合,可以理解为容器的东西.所以它本身并 ...
- SharePoint Security and Permission System Overview
转:http://www.sharepointblues.com/2010/09/01/sharepoint-security-and-permission-system-overview/ Shar ...
随机推荐
- 【52】写了placement new也要写placement delete
1.Widget* pw = new Widget; 调用了两个方法:第一个方法是operator new 负责分配内存:第二个方法是在分配的内存上构造Widget,即调用Widget的default ...
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方法所需要的代码,这使得它独立于其他的类 ...
- PHP PDO函数库具体解释
文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/565 PDO是一个"数据库訪问抽象层",作用是统一各种数据库的訪问接口 ...
- powershell 查看程序的tcp网络连接
在运维工作中,常常查看某个业务的网络连接状况,在这里借用netstat来实现查找连接.用hash特性避免反复. $add=@{} while(1){ ps|?{$_.path -match 'E:\\ ...
- Tomcat部署web应用的三种方式
原文:http://my.oschina.net/sunchp/blog/90235 一:相关概念 CATALINA_HOME:tomcat安装目录 CATALINA_BASE:tomcat工作目录 ...
- 已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
操作SQLServer数据库时.遇到这种问题:已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222) 经过查找材料了解为资源抢占,照成死锁,杀死进程就OK了.详细操作 ...
- js倒计时功能
<input id="countdown" type="text" value="140时50分20秒"> <script ...
- java_可变参数构造器 Bulder模式
package com.test1.www; class NutritionFacts { //必须 private int servingSize; private int servings; // ...
- iOS常见文件及程序的启动原理
一. iOS中常见文件 (一). Xcode6之前 创建项目,默认可以看见一个存放框架的文件夹 info文件以工程文件名开头,如:第一个项目-Info.plist 项目中默认有一个PCH文件 (二). ...
- about semget
flags must include read,write,execute permission. for examples: semget( 3333, 1, IPC_CREAT | IPC_EXC ...