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域用户信息的更多相关文章

  1. python-ldap修改AD域用户密码(CA+SSL)

    代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...

  2. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  3. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  4. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

  5. gitlab用户登录与AD域用户集成

    ---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...

  6. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  7. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  8. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息]

    三.使用Azure AD管理用户信息 在上一章我们采用OpenID的方案和Azure AD交互进行身份验证,本章节我们继续了解如何在Azure AD中创建用户,列出用户信息,修改用户信息和删除用户信息 ...

  9. ASP 验证、查询AD域账户信息

    '''函数功能:查询域用户信息 '''参数说明:strAdmin-域管理账户:Password-域帐户密码:Domain-域服务器. ''' ''' 参考资料:http://www.experts-e ...

随机推荐

  1. postgresql主从配置

    master:10.0.1.114 slaver:10.0.1.116 一.yum安装https://blog.csdn.net/weixin_41048363/article/details/803 ...

  2. 【IT笔试面试题整理】给定一个数组a[N]构造数组b [N]

    [来源]:腾讯2013实习生笔试   给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]-a[N-1] / a[j])空间复杂度和O(n)的时间复杂度:除遍历计数器与a ...

  3. Golang 方法method

    方法method Go中虽没有class,但依旧有method 通过显示说明receiver来实现与某个类型的结合 只能为同一个包中的类型定义方法 receiver可以是类型的值或者指针 不存在方法重 ...

  4. LVS专题-(1)LVS基本介绍

    LVS官方网站:http://www.linuxvirtualserver.org/zh/lvs1.html

  5. 在Java的反射中,Class.forName和ClassLoader的区别

    前言 最近在面试过程中有被问到,在Java反射中Class.forName()加载类和使用ClassLoader加载类的区别.当时没有想出来后来自己研究了一下就写下来记录一下. 解释 在java中Cl ...

  6. .Net Core使用Socket与树莓派进行通信

    前言 去年买的树莓派一直放在抽屉里吃灰,前些阵子Debian 9发布,也不出意外的支持了树莓派. 于是重新拿出读卡器又重新了装上了Debian桌面版系统. 介绍 现在这个东西目前的程度只是了解一下Py ...

  7. 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布

    很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现 ...

  8. C# 集合 特殊集合

    一集合 1.可为不同类型,不固定长度 2.集合类型分为泛型集合(强类型集合)与非泛型集合(弱类型集合). 3.非泛型集合的类和接口位于using System.Collections命名空间. 4.泛 ...

  9. pdf.js 使用汇总

    https://www.cnblogs.com/iPing9/p/7154753.htmlhttp://blog.csdn.net/m0_38021128/article/details/708684 ...

  10. [android] 优酷环形菜单-旋转动画

    获取房子,菜单图标ImageView对象,获取三个圆环RelativeLayout对象 给菜单图标(icon_menu)设置点击事件 定义一个成员变量isLevel3Show来存储第三级菜单是否显示 ...