批量添加域用户
一、 AD用户帐户复制
1、在“AD域和计算机”中建一个作为样板的用户,如S1。
2、设置相关需要的选项,如所属的用户组、登录时间、用户下次登录时需更改密码等。
3、在S1上/右键/复制,输入名字和口令。
说明:
1、 只有AD域用户帐户才可以复制,对于本地用户帐户无此功能。
2、 帐户复制可将在样板用户帐户设置的大多数属性带过来。具体如下:
二、比较csvde与ldifde
csvde: 逗号分隔符目录交换工具
允许您使用 CSV 源文件将新对象导入到 Active Directory 中;此外,该工具还提供了将现有对象导出到 CSV 文件的功能。CSVDE 不能用于修改现有对象;在导入模式下使用此工具时,您只能创建全新的对象。
使用 CSVDE 导出现有对象的列表相当简单。将 Active Directory 对象导出到名为 ad.csv 的文件,方法如下:
csvde –f ad.csv
–f 开关表示后面为输出文件的名称。但是您必须注意,根据环境的不同,此基本语法可能会生成不实用的大型输出文件。要将此工具限制为仅导出特定组织单位 (OU) 中的对象,可以将语句修改为如下形式:
csvde –f UsersOU.csv –d u=Users,dc=contoso,dc=com
进一步假定您只对将用户对象导出到 CSV 文件感兴趣。如果是那样的话,您可以添加 –r 开关和 –l 开关,前者允许指定轻型目录访问协议 (LDAP) 筛选器进行搜索,后者可以限制导出的属性的数量(请注意以下所有内容位于一行):
csvde –f UsersOnly.csv –d u=Users,dc=contoso,dc=com –r
"(&(objectcategory=person)(objectclass=user))" –l
DN,objectClass,description
通过 –i 开关,您可以将对象从源 CSV 文件导入到 Active Directory。但是,使用 CSVDE 创建用户对象存在一个关键限制:不能使用 CSVDE 设置用户密码。因此,应该避免使用 CSVDE 创建用户对象。
ldifde:轻型目录访问协议,互换格式目录交换
与 CSVDE 相比,此工具更强大,更灵活。除了可以创建新对象外,LDIFDE 还可以修改和删除现有对象,甚至扩展Active Directory 架构。LDIFDE 虽然具有灵活性,但为了实现这种灵活性却必须要使用扩展名为 .ldf 的 LDIF 文件作为输出文件,这种文件与简单的 CSV 文件相比,格式更复杂。(只需少量操作就可以配置好用户密码,我稍后将对此进行介绍。)
我们从一个简单的示例开始,将某个 OU 中的用户导出到 LDF 文件中(请注意以下所有内容位于一行):
ldifde -f users.ldf -s DC1.contoso.com -d "ou=UsersOU,dc=contoso,dc=com"
–r "(&(objectcategory=person)(objectclass=user))"
与大多数命令行工具一样,您可以通过运行 LDIFDE /? 命令找到 LDIFDE 开关的完整说明。图 1 介绍了我在此使用过的开关。(注意 CSVDE 和 LDIFDE 命令的开关实际上是相同的。)
LDIFDE 的真正功能在于创建和操作对象。然而,进行此操作之前,您首先需要创建一个输入文件。以下语句创建两个名为 afuller 和 rking 的用户帐户;要创建该输入文件,请在记事本(或者您喜欢的纯文本编辑器)中输入以下文本,然后将其保存为 NewUsers.ldf:
dn: CN=afuller, U=UsersOU, DC=contoso, DC=com
changetype: add
cn: afuller
objectClass: user
samAccountName: afuller
dn: CN=rking, U=UsersOU, DC=contoso, DC=com
changetype: add
cn: rking
objectClass: user
samAccountName: rking
创建完该文件后,请运行以下命令:
ldifde –i –f NewUsers.ldf –s DC1.contoso.com
您可能会猜到,此处使用的唯一新开关 -i 表明这是一项导入操作而非导出操作。如果要修改或删除现有对象,不必更改 LDIFDE 命令的语法;相反,您应该修改 LDF 文件中的内容。要更改用户帐户的说明字段,请创建名为 ModifyUsers.ldf 的文本文件。
您可以通过运行与之前相同的 LDIFDE 命令语法,在 -f 开关后面指定新的 LDF 文件名来导入更改。用于删除对象的LDF 格式更简单;要删除一直使用的用户,请创建一个名为 DeleteUsers.ldf 的文件,然后输入以下内容:
dn: CN=afuller U=UsersOU, DC=contoso, DC=com
changetype: delete
dn: CN=rking, U=UsersOU, DC=contoso, DC=com
changetype: delete
注意,与 CSVDE 不同,LDIFDE 能够配置用户密码。不过,在为用户帐户配置 unicodePWD 属性之前,必须在域控制器上配置安全套接字层/传输层安全性 (SSL/TLS) 加密。
而且,LDIFDE 能够创建和修改任何类型的 Active Directory 对象,并不仅限于用户帐户。例如,下面的 LDF 文件可在 contoso.com 林的架构中创建名为 EmployeeID-example 的自定义架构扩展:
dn: cn=EmployeeID-example,cn=Schema,
cn=Configuration,dc=contoso,dc=com
changetype: add
adminDisplayName: EmployeeID-Example
attributeID: 1.2.3.4.5.6.6.6.7
attributeSyntax: 2.5.5.6
cn: Employee-ID
instanceType: 4
isSingleValued: True
lDAPDisplayName: employeeID-example
由于 LDIFDE 文件使用工业标准 LDAP 文件格式,因此需要修改 Active Directory 架构的第三方应用程序会经常提供LDF 文件,您可以在将这些更改应用于生产环境之前使用这些文件检查和批准更改。
三、以csvde.exe为例说明:域用户帐户的导出/导入
操作步骤如下:
1、 在“AD域和计算机”中建一个用户,如S1。
2、 设置相关需要的选项,如所属的用户组、登录时间、用户下次登录时需更改密码等。
3、 在DC上,开始/运行:cmd
4、 键入:csvde –f demo.csv
说明:(1)不要试图将这个文件导回,来验证是否好使。因为这个文件中的好多字段在导入时是不允许用的,如:ObjectGUID、objectSID、pwdLastSet 和 samAccountType 等属性。我们导出这个文件目的只是为了查看相应的字段名是什么,其值应该怎么写。
(2)可通过-d –r参数指定导出范围和对象类型。例如:
-d “ou=test,dc=mcse,dc=com” 或 -d “cn=users,dc=mcse,dc=com”
-r “< Objectclass=user>”
5、 以上面的文件为参考基础,创建自己的my.csv,并利用复制、粘贴、修改得到多条记录(注意大小写)。例如:
DN,objectClass,sAMAccountName,userAccountControl,userPrincipalName
"CN=s1,OU=test,DC=mcse,DC=com",user,S1,512,S1@mcse.com
"CN=s2,OU=test,DC=mcse,DC=com",user,S2,512,S2@mcse.com
………………
其它可用字段,我试了一下,见下表(不全):
说明:有些标签平常极少用到,就没有试。如果需要可以自己导出来看一下,像一些复杂的字段,如:userParameters,还是用粘贴吧。
6、导入到AD,键入 csvde –i –f my.csv –j c:\
说明:-j用于设置日志文件位置,默认为当前路径。此选项可帮助用户在导入不成功时排错。
有一点大家必须明确的是:我们在这里做AD域用户帐户复制、做AD域用户帐户的导出/导入,并不能代替“AD备份和恢复”。我们只是在批量创建用户帐号,帐号的SID都是重新生成的,权利权限都得重新设才行。(当然我们可以把导入的用户,通过memberof字段设到一些用户组中去,使它有权利权限。但这与利用“AD备份和恢复”到原状,完全是两回事)。 作为网管,有时我们需要批量地向AD域中添加用户帐户,这些用户帐户既有一些相同的属性,又有一些不同属性。如果逐个添加、设置的话,十分地麻烦。一般来说,如果不超过10个,我们可利用AD用户帐户复制来实现。如果再多的话,我们就应该考虑使用csvde.exe或ldifde.exe来减轻我们的工作量了。
除了用于执行批量导入和导出操作的工具外,Windows Server 2003 还包括一个内置工具集,您可以使用它来创建、删除和修改各种 Active Directory 对象,还可以对符合特定条件的对象执行查询。(请注意 Windows 2000 Active Directory并不支持这些工具,如 dsadd、dsrm、dsget 和 dsquery 等。)
dsadd
Dsadd 用于在特定的目录分区上创建 Active Directory 对象类的实例。这些类包括用户、计算机、联系人、组、组织单位和配额。Dsadd 具备一个由下列内容组成的通用语法:
dsadd attributes
请注意,您创建的每个对象类型都有一组特定的开关,它们与该类型的属性相对应。以下命令创建一个填充了各种属性的用户对象(请注意以下所有内容位于一行):
dsadd user cn=afuller,ou=IT,dc=contoso,dc=com
–samID afuller –fn Andrew –ln Fuller –pwd *
-memberOf cn=IT,ou=Groups,dc=contoso,dc=com "cn=Help Desk,ou=Groups,
dc=contoso,dc=com"
–desc "Marketing Director"
–memberOf 开关要求指定应添加该用户的每个组的完整可分辨名称 (DN);如果要将用户添加到多个组,您可以添加多个 DN 并用空格分隔开。
任何元素如果包含空格(如 Help Desk 组的 DN),则该元素应该括在双引号中。如果某个元素含有反斜杠(如称为 IT\EMEA 的 OU),则必须输入两次反斜杠:IT\\EMEA。(这些要求适用于所有的 ds* 工具。)
如果使用 -pwd * 开关,则系统将提示您在命令行输入用户密码。您可以在该命令中指定密码 (-pwd P@ssword1),但是这样会在屏幕上或该命令嵌入到的任何文本或脚本文件中以纯文本形式显示该密码。
同样,您可以使用下列两个命令创建组对象和 OU:
dsadd computer cn=WKS1,ou=Workstations,dc=contoso,dc=com
dsadd ou "ou=Training OU,dc=contoso,dc=com"
Dsmod
Dsmod 用于修改现有对象,它的使用方法与 dsadd 非常相似,您需要根据要修改的对象的类型使用不同的子菜单和语法。以下 dsmod 语句会更改用户的密码并修改该用户的帐户,因此在下次登录时系统会提示该用户更改为新的密码:
dsmod user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
–mustchpwd yes
要了解这些开关多么相似,您可以查看要用于创建此用户并配置了相同属性的 dsadd 语法:
dsadd user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1
–mustchpwd yes
您可以清晰地看到,如果知道 dsadd 中用于创建对象的开关,则可以使用那些相同的开关修改 dsmod 用户。
dsrm
dsrm 与 dsadd 是相逆的;正如您可能想到的,使用此工具可从命令行中删除对象。基本的 dsrm 语法相当简明:只需输入 dsrm 后输入要删除对象的可分辨名称即可,如下所示:
dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com
默认情况下,dsrm 会提示“确实要删除此对象吗?”,此时键入 Y,然后按 Enter。您可以使用 –noprompt 开关禁止显示此提示,但很明显,这样做无法在删除对象之前确认所选对象是否正确。如果要删除容器对象(即,在其内部可能包含其他对象的组织单位),另外两个开关可能会很有用。以下命令将删除 TrainingOU 组织单位及其内部包含的所有对象:
dsrm u=TrainingOU,dc=contoso,dc=com –subtree
以下命令将删除包含在 TrainingOU 中的所有子对象,但保留组织单位对象本身:
dsrm u=TrainingOU,dc=contoso,dc=com –subtree
–exclude\
本文转自legendfu51CTO博客,原文链接:http://blog.51cto.com/legendfu/1068146 ,如需转载请自行联系原作者