当前位置:
首页 > temp > 简明python教程 >
-
C#读取ActiveDirectory
public class ActiveDirectoryManager { public static DirectoryEntry GetDirectoryEntry() { DirectoryEntry entry = null; try { if (entry == null) { entry = new DirectoryEntry(ActiveDirectoryHelper.ADString, ActiveDirectoryHelper.ADUserName, ActiveDirectoryHelper.ADPassWord, AuthenticationTypes.Secure); } return entry; } catch (Exception ex) { throw ex; } } public static DirectorySearcher GetDirectorySearcher(DirectoryEntry entry) { DirectorySearcher searcher = null; try { if (searcher == null) { searcher = new DirectorySearcher(entry) { CacheResults = true, SearchScope = SearchScope.Subtree }; var propertys = ActiveDirectoryHelper.ADProperty.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); searcher.PropertiesToLoad.Clear(); foreach (var item in propertys) { searcher.PropertiesToLoad.Add(item); } } return searcher; } catch (Exception ex) { throw ex; } } } public class ActiveDirectoryHelper { public static string ADString = ConfigurationManager.ConnectionStrings["ADConnectionString"].ConnectionString; public static string ADUserName = ConfigurationManager.AppSettings["ADUsername"]; public static string ADPassWord = ConfigurationManager.AppSettings["ADPassword"]; public static string ADProperty = ConfigurationManager.AppSettings["ADProperty"]; public static string ADKey = ConfigurationManager.AppSettings["ADKey"]; public static string ADUserWhere = ConfigurationManager.AppSettings["ADUserWhere"].Replace("﹠", "&"); public static List<object> GetDirectoryInfo(DirectorySearcher searcher, string userName = null, string userCode = null) { var where = string.Empty; if (!string.IsNullOrWhiteSpace(userName) || !string.IsNullOrWhiteSpace(userCode)) { where = string.Format(ADUserWhere, userName == null ? string.Empty : userName, userCode == null ? string.Empty : userCode); } else { where = "(&(objectClass=user))"; } return ExecuteDataSource(searcher, where); } private static List<object> ExecuteDataSource(DirectorySearcher searcher, string where) { if (!string.IsNullOrWhiteSpace(where)) searcher.Filter = where; SearchResultCollection result = searcher.FindAll(); Func<SearchResult, bool> basicWhere = x => true; var keys = ADKey.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in keys) { basicWhere += x => !string.IsNullOrWhiteSpace(x.Properties.Get<string>(item)); } //return result.OfType<SearchResult>().Where(x => !ResultOrEmpty(x)).Select(x => GetDynamic(x)).ToList(); //var SearchResults = result.OfType<SearchResult>().Where(basicWhere); var propertys = ADProperty.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); return result.OfType<SearchResult>().Select(x => GetDynamic(x, propertys)).Where(x=>x != null).ToList(); } private static object GetDynamic(SearchResult result,string[] propertys) { dynamic info = new ExpandoObject(); var dic = (IDictionary<string, object>)info; //var propertys = ADProperty.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); var keys = ADKey.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in propertys) { if (string.IsNullOrWhiteSpace(result.Properties.Get<string>(item)) && keys.Contains(item)) { return null; } dic.Add(item, result.Properties.Get<string>(item)); } return info; } private static bool ResultOrEmpty(SearchResult result) { bool isEmpty = false; var keys = ADKey.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in keys) { if (string.IsNullOrWhiteSpace(result.Properties.Get<string>(item))) { isEmpty = true; break; } } return isEmpty; } } public static class ResultPropertyCollectionExtension { public static T Get<T>(this ResultPropertyCollection target, string propertyName) { if (target == null) throw new ArgumentNullException("target"); if (string.IsNullOrEmpty(propertyName)) throw new ArgumentNullException("propertyName"); if (target.Contains(propertyName) && target[propertyName].Count > 0) return (T)target[propertyName][0]; return default(T); } }
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数