C#读取AD域用户信息
private const string domainName = "本机IP地址或域名";
private const string adAdmin = "管理员帐号";
private const string password = "管理员密码";
private const string ouName = "子节点名";//只是一个子节点名
private DataTable GetADUsers()
{
DataTable dt = new DataTable();
dt.Columns.Add("sAMAccountName");//帐号
dt.Columns.Add("displayName");//显示名称
dt.Columns.Add("description");//描述
dt.Columns.Add("telephoneNumber");//电话号码
dt.Columns.Add("mail"); //邮箱地址
dt.Columns.Add("wWWHomePage"); //网页
dt.Columns.Add("c"); //国家
dt.Columns.Add("st"); //省/自治区
dt.Columns.Add("l"); //市/县
dt.Columns.Add("streetAddress"); //街道
dt.Columns.Add("company");//公司
dt.Columns.Add("department");//部门
dt.Columns.Add("title");//职务
dt.Columns.Add("manager");//我的经理
DirectoryEntry adRoot = new DirectoryEntry("LDAP://" + domainName, adAdmin, password, AuthenticationTypes.Secure);
DirectoryEntry ou = adRoot.Children.Find("OU=" + ouName);
DirectorySearcher mySearcher = new DirectorySearcher(ou);//想搜索出所有,此处可省参数
mySearcher.Filter = ("(objectClass=user)"); //user表示用户,group表示组
foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
//if (user.Properties.Contains("mail"))
//{
// dr["mail"] = user.Properties["mail"][0].ToString();
//}
//if (user.Parent.Name != string.Empty && user.Parent.Name.IndexOf('=') > -1)
//{
// //获取用户所在的组织单位
// dr["OU"] = user.Parent.Name.Split('=')[1];
//}
DataRow dr = dt.NewRow();
DirectoryEntry user = resEnt.GetDirectoryEntry();
if (user.Properties.Contains("sAMAccountName"))
{
dr["sAMAccountName"] = user.Properties["sAMAccountName"][0].ToString();
}
if (user.Properties.Contains("displayName"))
{
dr["displayName"] = user.Properties["displayName"][0].ToString();
}
if (user.Properties.Contains("description"))
{
dr["description"] = user.Properties["description"][0].ToString();
}
if (user.Properties.Contains("telephoneNumber"))
{
dr["telephoneNumber"] = user.Properties["telephoneNumber"][0].ToString();
}
if (user.Properties.Contains("mail"))
{
dr["mail"] = user.Properties["mail"][0].ToString();
}
if (user.Properties.Contains("wWWHomePage"))
{
dr["wWWHomePage"] = user.Properties["wWWHomePage"][0].ToString();
}
if (user.Properties.Contains("c"))
{
dr["c"] = user.Properties["c"][0].ToString();
}
if (user.Properties.Contains("st"))
{
dr["st"] = user.Properties["st"][0].ToString();
}
if (user.Properties.Contains("l"))
{
dr["l"] = user.Properties["l"][0].ToString();
}
if (user.Properties.Contains("streetAddress"))
{
dr["streetAddress"] = user.Properties["streetAddress"][0].ToString();
}
if (user.Properties.Contains("company"))
{
dr["company"] = user.Properties["company"][0].ToString();
}
if (user.Properties.Contains("department"))
{
dr["department"] = user.Properties["department"][0].ToString();
}
if (user.Properties.Contains("title"))
{
dr["title"] = user.Properties["title"][0].ToString();
}
if (user.Properties.Contains("manager"))
{
dr["manager"] = user.Properties["manager"][0].ToString().Split(',')[0].Remove(0, 3);
}
dt.Rows.Add(dr);
}
return dt;
}
C#读取AD域用户信息的更多相关文章
- python-ldap修改AD域用户密码(CA+SSL)
代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...
- JAVA 通过LDAP获取AD域用户及组织信息
因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...
- AD 域服务简介(二)- Java 获取 AD 域用户
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- gitlab用户登录与AD域用户集成
---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...
- SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)
由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...
- SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)
前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...
- 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息]
三.使用Azure AD管理用户信息 在上一章我们采用OpenID的方案和Azure AD交互进行身份验证,本章节我们继续了解如何在Azure AD中创建用户,列出用户信息,修改用户信息和删除用户信息 ...
- ASP 验证、查询AD域账户信息
'''函数功能:查询域用户信息 '''参数说明:strAdmin-域管理账户:Password-域帐户密码:Domain-域服务器. ''' ''' 参考资料:http://www.experts-e ...
随机推荐
- j2ee高级开发技术课程第三周
一.分析Filter例子(轻量级javaee企业应用实战p132) // 执行过滤的核心方法 public void doFilter(ServletRequest request, ServletR ...
- 用鼠标键盘来控制你的Android手机——同屏显示简单教程
今天在微博上看到有人用电脑鼠标操作iPhone手机玩打飞机游戏,非常炫,虽然自己用的不是iPhone,但相信Android手机肯定也能实现这样的功能,于是网上各种搜索方法,终于看到了一篇试用成功的帖子 ...
- spring 通过@Value 获取properties文件中设置了属性 ,与@Value # 和$的区别
spring 获取 properties的值方法 在spring.xml中配置 很奇怪的是,在context-param 加载的spring.xml 不能使用 ${xxx} 必须交给Dispatche ...
- sql的存储过程实例--动态根据表数据复制一个表的数据到另一个表
动态根据表数据复制一个表的数据到另一个表 把track表的记录 根据mac_id后两位数字,复制到对应track_? 的表中 如:mac_id=12345678910,则后两位10 对应表为track ...
- 译自如何将Spring Cloud应用程序从Spring Boot 1.2迁移到1.3
前言 笔者第三个Spring Cloud(版本为Spring Boot 1.2)类项目升级最新版本时遇到不少问题,本文内容是作者翻译Spring Cloud官网一位国外友人文章产生. 原文地址: Mi ...
- 【跟着开涛学Shiro】(一)Shiro简介
声明:本部分内容均转自于张老师的博客,因为本人很喜欢他的博客,所以一直在学习,转载仅是记录和分享,若也有喜欢的人的话,可以去他的博客首页看:http://jinnianshilongnian.itey ...
- 语义化版本控制规范(SemVer)
参考链接 https://semver.org/lang/zh-CN/ 语义化版本 2.0.0 (透过版本号的改变来传达信息.) 摘要 版本格式: 主版本号.次版本号.修订号 版本号递增规则如下: 1 ...
- [日常] Go语言圣经--复数,布尔值,字符串习题
go语言圣经-复数 1.我们把形如a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位.两种精度的复数类型:complex64和complex128,分别对应float3 ...
- SQl语句查询性能优化
[摘要]本文从DBMS的查询优化器对SQL查询语句进行性能优化的角度出发,结合数据库理论,从查询表达式及其多种查询条件组合对数据库查询性能优化进行分析,总结出多种提高数据库查询性能优化策略,介绍索引的 ...
- HDU4283(KB22-G)
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...