AD属性对照表

最近在做AD编程方面的东西,参考了网上流传的ADHelper,貌似AD的属性赋值的方法都是有误的。
原方法类似下面这样:

 1 public static void SetProperty(DirectoryEntry de, string propertyName, string propertyValue)
 2          {
 3               if(propertyValue != string.Empty || propertyValue != "" || propertyValue != null)
 4               {
 5                    if(de.Properties.Contains(propertyName))
 6                    {
 7                        de.Properties[propertyName][0= propertyValue; 
 8                    }
 9                    else
10                    {
11                        de.Properties[propertyName].Add(propertyValue);
12                    }
13               }
14          }
但是在实际的操作中您会发现,有时候我们已经赋值过的属性需要改成空值,那用这个方法是怎么样也不会生效了。而且您也会发现,把propertyValue的空值判断去掉,也不会通过的,因为,不管存在不存在这个属性,你将这个属性直接赋值为空就会报错的。
要将属性值赋值为空值,是用移除的方法来实现的,下面的方法是经过更正的:
 1 public static void SetProperty(DirectoryEntry entry, string propertyName, string propertyValue)
 2         {
 3             if (entry.Properties.Contains(propertyName))
 4             {
 5                 if (string.IsNullOrEmpty(propertyValue))
 6                 {
 7                     object o = entry.Properties[propertyName].Value;
 8                     entry.Properties[propertyName].Remove(o);
 9                 }
10                 else
11                 {
12                     entry.Properties[propertyName][0= propertyValue;
13                 }
14             }
15             else
16             {
17                 if (!string.IsNullOrEmpty(propertyValue))
18                 {
19                     entry.Properties[propertyName].Add(propertyValue);
20                 }
21             }
22         }
“常规”标签
姓 Sn 
名 Givename 
英文缩写 Initials 
显示名称 displayName 
描述 Description 
办公室 physicalDeliveryOfficeName  
电话号码 telephoneNumber 
电话号码:其它 otherTelephone 多个以英文分号分隔 
电子邮件 Mail 
网页 wWWHomePage 
网页:其它 url 多个以英文分号分隔
“地址”标签
国家/地区 C 如:中国CN,英国GB 
省/自治区 St  
市/县 L 
街道 streetAddress 
邮政信箱 postOfficeBox 
邮政编码 postalCode 
“帐户”标签
用户登录名 userPrincipalName 形如:pccai1983@hotmail.com 
用户登录名(以前版本) sAMAccountName 形如:S1 
登录时间 logonHours  
登录到 userWorkstations 多个以英文逗号分隔 
用户帐户控制 userAccountControl (启用:512,禁用:514, 密码永不过期:66048) 
帐户过期 accountExpires 
“配置文件”标签
配置文件路径 profilePath 
登录脚本 scriptPath 
主文件夹:本地路径 homeDirectory 
连接 homeDrive 
到 homeDirectory 
“电话”标签
家庭电话 homePhone (若是其它,在前面加other。) 
寻呼机 Pager 如:otherhomePhone。 
移动电话 mobile 若多个以英文分号分隔。 
传真 FacsimileTelephoneNumber  
IP电话 ipPhone 
注释 Info 
“单位”标签
职务 Title 
部门 Department 
公司 Company 
“隶属于”标签
隶属于  memberOf  用户组的DN不需使用引号, 多个用分号分隔  
“拨入”标签 远程访问权限(拨入或VPN) msNPAllowDialin 
允许访问 值:TRUE 
拒绝访问 值:FALSE 
回拨选项 msRADIUSServiceType 
由呼叫方设置或回拨到 值:4 
总是回拨到 msRADIUSCallbackNumber  

名:GivenName

 

属性

显示名称

属性名称

First Name

givenName

Last Name

sn

Initials

initials

Description

description

Office

physicalDeliveryOfficeName

Telephone Number

telephoneNumber

Telephone: Other

otherTelephone

E-Mail

mail

Web Page

wwwHomePage

Web Page: Other

url

 

帐号属性:

 

显示名称

属性名称

UserLogon Name

userPrincipalName

User logon name (pre-Windows 2000)

sAMAccountname

Logon Hours

logonHours

Log On To

logonWorkstation

Account is locked out

userAccountControl

User must change password at next logon

pwdLastSet

User cannot change password

N/A

Other Account Options

userAccountControl

Account Expires

accountExpires

 

地址属性

 

显示名称

属性名称

Street

streetAddress

P.O.Box

postOfficeBox

City

l

State/Province

st

Zip/Postal Code

postalCode

Country/Region

c, co, and countryCode

 

成员属性

 

显示名称

属性名称

Member of

memberOf

Set Primary Group

primaryGroupID

 

组织属性

 

显示名称

属性名称

Title

title

Department

department

Company

company

Manager:Name

manager

Direct Reports

directReports

 

外型属性

 

显示名称

属性名称

Profile Path

profilePath

Logon Script

scriptPath

Home Folder: Local Path

homeDirectory

Home Folder: Connect

homeDrive

Home Folder: To

homeDirectory

 

电话相关属性

 

显示名称

属性名称

Home

telephoneNumber

Home: Other

otherTelephone

Pager

pager

Pager: Other

pagerOther

Mobile

mobile

Mobile: Other

otherMobile

Fax

facsimileTelephoneNumber

Fax: Other

otherFacsimileTelephoneNumber

IP phone

ipPhone

IP phone: Other

otherIpPhone

Notes

info

 

C#操作AD例子:

GetUserEntry

         public static DirectoryEntry GetUserEntryByAccount(DirectoryEntry entry, string account)

                   {

                            DirectorySearcher searcher = new DirectorySearcher(entry);

                            searcher.Filter = "(&(objectClass=user)(SAMAccountName=" + account + "))";

                            SearchResult result = searcher.FindOne();

                            entry.Close();

                            if (result != null)

                            {

                                     return result.GetDirectoryEntry();

                            }

                            return null;

                   }

Set Property

                   public static void SetProperty(DirectoryEntry entry, string propertyName, string propertyValue)

                   {

                            if (entry.Properties.Contains(propertyName))

                            {

                                     if (string.IsNullOrEmpty(propertyValue))

                                     {

                                               object o = entry.Properties[propertyName].Value;

                                               entry.Properties[propertyName].Remove(o);

                                     }

                                     else

                                     {

                                               entry.Properties[propertyName][0] = propertyValue;

                                     }

                            }

                            else

                            {

                                     if (string.IsNullOrEmpty(propertyValue))

                                     {

                                               return;

                                     }

                                     entry.Properties[propertyName].Add(propertyValue);

                            }

                   }

Get Property

         public static string GetProperty(DirectoryEntry entry, string propertyName)

                   {

                            if (entry.Properties.Contains(propertyName))

                            {

                                     return entry.Properties[propertyName].Value.ToString();

                            }

                            else

                            {

                                     return string.Empty;

                            }

                   }

posted @ 2013-03-08 11:04  绿森林  阅读(1109)  评论(0编辑  收藏  举报