C#获取AD用户信息

      假设AD中有一组织单位,给定以下信息:
       AD:ms.com
       AD管理员:administrator
       AD管理员密码:pass@word1      
       组织单位名称:XX有限公司(不必理会其下有嵌套多少组织单位,通常都是部门)

      现在要获取这一组织单位下的所有的用户信息,比如只要:帐号,姓名,邮件,所在组织这四个字段,具体实现如示例代码所示:      
         private   const   string  domainName  =   " ms.com " ;
        
private   const   string  adAdmin  =   " administrator " ;
        
private   const   string  password  =   " pass@word1 " ;
        
private   const   string  ouName  =   " XX有限公司 " ;

        
private  DataTable GetADUsers()
        {
           DataTable dt 
=   new  DataTable();
           dt.Columns.Add(
" sAMAccountName " ); // 帐号
            dt.Columns.Add( " Name " ); // 姓名
            dt.Columns.Add( " mail " );  // 邮箱地址
            dt.Columns.Add( " OU " );   // 用户组织

            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())
            {
                DataRow dr 
=  dt.NewRow();
                dr[
" sAMAccountName " =   string .Empty;
                dr[
" Name " =   string .Empty;
                dr[
" mail " =   string .Empty;
                dr[
" OU " =   string .Empty;

                DirectoryEntry user 
=  resEnt.GetDirectoryEntry();
                
if  (user.Properties.Contains( " sAMAccountName " ))
                {
                    dr[
" sAMAccountName " =  user.Properties[ " sAMAccountName " ][ 0 ].ToString();
                }
                
if  (user.Properties.Contains( " Name " ))
                {
                    dr[
" Name " =  user.Properties[ " Name " ][ 0 ].ToString();
                }
                
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 ];
                }
                dt.Rows.Add(dr);
            }
            
return  dt;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值