By MBPDLPayday Loans

批量修改AD中的用户信息

公司搬家了, AD中的用户信息需要修改一下, 比如地址, 电话, 传真什么的.

MS有个命令行工具叫”LDIFDE“, 用这玩意儿可以轻松搞定.

首先, 把AD中涉及到的用户导出来:

ldifde -f all-users.ldf -s ADSERVER -d
"OU=XXX,OU=XXX,OU=Domain Users,DC=XX,DC=XX,DC=XX"
-p subtree
-l "streetAddress,postalCode,telephoneNumber,facsimileTelephoneNumber"
-r "(st=Jiang Su)"

最后的(st=Jiang Su)是一个filter, 也可以选择其他对象.

导出来的all-user.ldf可以用文本编辑器打开, 里面一行一行地记录了用户的信息. 很显然要对其进行修改, 但是直接修改里面的键值是不行的, 得指定其模式, 并且按照规定的文本格式重新排列.

比如一笔用户数据长这个样子:

dn: CN=USER,OU=XX,OU=XXX,OU=XXX,OU=Domain Users,DC=XX,DC=XX,DC=XX
changetype: add
streetAddress: xxx, xxxxxx, xxxxxxx
facsimileTelephoneNumber: +86 25 xxxxxx
postalCode: 210008
telephoneNumber: +86 25 xxxxxx

若修改streetAddress,facsimileTelephoneNumber,postalCode,telephoneNumber四项, 需要按照这个格式来组织:

dn: CN=USER,OU=XX,OU=XXX,OU=XXX,OU=Domain Users,DC=XX,DC=XX,DC=XX
changetype: modify
replace: streetAddress
streetAddress: NEW ADDRESS
-
replace: facsimileTelephoneNumber
facsimileTelephoneNumber: +86 25 NEW NUMBER
-
replace: postalCode
postalCode: 210012
-
replace: telephoneNumber
telephoneNumber: +86 25 NEW NUMBER
-

有了目标格式, 可以用多种途径将源数据文件修改成为可用的导入数据文件,可以编程替换, 也可以用一些功能强大的文本编辑工具直接正则表达式替换(因为telephoneNumber里面有分机信息, 每个人都不相同).

在将数据导入文件做好后, 就可以用下面的命令批量导入了:

ldifde -i -f user-to-inport.ldf -s ADSERVER

过程中我遇到一些问题:
1. 用户属性栏位字段的查找, 比如前面sample里面的
“streetAddress,facsimileTelephoneNumber,postalCode,telephoneNumber”,
实际上, 我必须知道fax对应在AD中的字段是facsimileTelephoneNumber才可以将它导出;
2. 在日常AD的使用中, 很多不规范的电话信息, 比如 +86 25 xxxxxx 和 +86-25-xxxxxx 这让我在批量查找替换的过程中费了不少事.

最后附一份默认schema下的AD用户属性栏位字段表(FROM HERE):

First name					sn
Last name						givenName
Initials						initials
Display name				displayName
description					description
Office							physicalDeliveryOfficeName
Telephone Number		telephoneNumber
E-mail							mail
Web page						wWWHomePage
Country/region			c
State/province			st
City								l
Street							streetAddress
Zip/Postal Code			postalCode
P.O. Box						postOfficeBox
User logon name			userPrincipalName
User logonname(pre-Windows 2000)		sAMAccountName
Profile path				profilePath
Logon script				scriptPath
Home folder					homeDirectory
Home								homePhone
Pager								pager
Mobile							mobile
Fax									facsimileTelephoneNumber
IP phone						ipPhone
Notes								info
Title								title
Department					department
Company							company
Manager							manager
Direct report				directReports
2 Responses to “批量修改AD中的用户信息”
  1. 贵公司终于搬家了?

  2. 嗯… 搬到了一个巨sb的地方.

Leave a Reply