AD属性对照表
最近在做AD编程方面的东西,参考了网上流传的ADHelper,貌似AD的属性赋值的方法都是有误的。
原方法类似下面这样:
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 }
要将属性值赋值为空值,是用移除的方法来实现的,下面的方法是经过更正的:
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 }
名 Givename
英文缩写 Initials
显示名称 displayName
描述 Description
办公室 physicalDeliveryOfficeName
电话号码 telephoneNumber
电话号码:其它 otherTelephone 多个以英文分号分隔
电子邮件 Mail
网页 wWWHomePage
网页:其它 url 多个以英文分号分隔
省/自治区 St
市/县 L
街道 streetAddress
邮政信箱 postOfficeBox
邮政编码 postalCode
用户登录名(以前版本) sAMAccountName 形如:S1
登录时间 logonHours
登录到 userWorkstations 多个以英文逗号分隔
用户帐户控制 userAccountControl (启用:512,禁用:514, 密码永不过期:66048)
帐户过期 accountExpires
登录脚本 scriptPath
主文件夹:本地路径 homeDirectory
连接 homeDrive
到 homeDirectory
寻呼机 Pager 如:otherhomePhone。
移动电话 mobile 若多个以英文分号分隔。
传真 FacsimileTelephoneNumber
IP电话 ipPhone
注释 Info
部门 Department
公司 Company
“拨入”标签 远程访问权限(拨入或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 |
|
|
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;
}
}