逗号分隔值数据交换工具(即
CSVDE
)
允许您使用
CSV
源文件将新对象导入到
Active Directory
中;此外,该工具还提供了将现有对象导出到
CSV
文件的功能。
CSVDE
不能用于修改现有对象;在导入模式下使用此工具时,您只能创建全新的对象。
使用
CSVDE
导出现有对象的列表相当简单。将
Active Directory
对象导出到名为
ad.csv
的文件
,
方法如下:
csvde �Cf ad.csv
�Cf
开关表示后面为输出文件的名称。但是您必须注意,根据环境的不同,此基本语法可能会生成不实用的大型输出文件。要将此工具限制为仅导出特定组织单位
(OU)
中的对象
,可以将语句修改为如下形式:
csvde �Cf UsersOU.csv �Cd u=Users,dc=contoso,dc=com
进一步假定您只对将用户对象导出到
CSV
文件感兴趣。如果是那样的话,您可以添加
�Cr
开关和
�Cl
开关,前者允许指定轻型目录访问协议
(LDAP)
筛选器进行搜索,后者可以限制导出的属性的数量(请注意以下所有内容位于一行):
csvde �Cf UsersOnly.csv �Cd u=Users,dc=contoso,dc=com �Cr
"(&(objectcategory=person)(objectclass=user))" �Cl
DN,objectClass,description
通过
�Ci
开关,您可以将对象从源
CSV
文件导入到
Active Directory
。
但是,使用
CSVDE
创建用户对象存在一个关键限制:不能使用
CSVDE
设置用户密码。因此,应该避免使用
CSVDE
创建用户对象。
LDIFDE
Active Directory
还提供了另外一个用于执行批量用户操作的内置工具,称为
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"
�Cr "(&(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 �Ci �Cf NewUsers.ldf �Cs DC1.contoso.com
您可能会猜到,此处使用的唯一新开关
-i
表明这是一项导入操作而非导出操作。
如果要修改或删除现有对象,不必更改
LDIFDE
命令的语法;相反,您应该修改
LDF
文件中的内容。要更改用户帐户的说明字段,请创建名为
ModifyUsers.ldf
的文本文件,如图
2
所示。
图
2 ModifyUsers LDF
文件
(
单击该图像获得较小视图
)
图
2 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
文件,您可以在将这些更改应用于生产环境之前使用这些文件检查和批准更改。
除了用于执行批量导入和导出操作的工具外,
Windows Server 2003
还包括一个内置工具集,您可以使用它来创建、删除和修改各种
Active Directory
对象,还可以对符合特定条件的对象执行查询。(请注意
Windows 2000 Active Directory
并不支持这些工具,如
dsadd
、
dsrm
、
dsget
和
dsquery
等。)
dsadd
Dsadd
用于在特定的目录分区上创建
Active Directory
对象类的实例。
这些类包括用户、计算机、联系人、组、组织单位和配额。
Dsadd
具备一个由下列内容组成的通用语法:
dsadd <ObjectType> <ObjectDistinguishedName> attributes
请注意,您创建的每个对象类型都有一组特定的开关,它们与该类型的属性相对应。
以下命令创建一个填充了各种属性的用户对象(请注意以下所有内容位于一行):
dsadd user cn=afuller,ou=IT,dc=contoso,dc=com
�CsamID afuller �Cfn Andrew �Cln Fuller �Cpwd *
-memberOf cn=IT,ou=Groups,dc=contoso,dc=com "cn=Help Desk,ou=Groups,
dc=contoso,dc=com"
�Cdesc "Marketing Director"
�CmemberOf
开关要求指定应添加该用户的每个组的完整可分辨名称
(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" �Cpwd P@ssw0rd1
�Cmustchpwd yes
要了解这些开关多么相似,您可以查看要用于创建此用户并配置了相同属性的
dsadd
语法:
dsadd user "cn=afuller,ou=IT,dc=contoso,dc=com" �Cpwd P@ssw0rd1
�Cmustchpwd yes
您可以清晰地看到,如果知道
dsadd
中用于创建对象的开关,则可以使用那些相同的开关修改
dsmod
用户。
dsrm
dsrm
与
dsadd
是相逆的;正如您可能想到的,使用此工具可从命令行中删除对象。
基本的
dsrm
语法相当简明:只需输入
dsrm
后输入要删除对象的可分辨名称即可,如下所示:
dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com
默认情况下,
dsrm
会提示
“
确实要删除此对象吗
?”
,此时键入
Y
,然后按
Enter
。您可以使用
�Cnoprompt
开关禁止显示此提示,但很明显,这样做无法在删除对象之前确认所选对象是否正确。如果要删除容器对象(即,在其内部可能包含其他对象的组织单位),另外两个开关可能会很有用。以下命令将删除
TrainingOU
组织单位及其内部包含的所有对象:
dsrm u=TrainingOU,dc=contoso,dc=com �Csubtree
以下命令将删除包含在
TrainingOU
中的所有子对象,但保留组织单位对象本身:
dsrm u=TrainingOU,dc=contoso,dc=com �Csubtree
�Cexclude
dsmove
要移动或重命名
Active Directory
中的对象,请使用
dsmove
工具,但请注意您只应使用该工具在单一域中移动对象。要在域和林之间迁移对象,请使用
Active Directory
迁移工具
(ADMT)
,可从
Microsoft
网站免费下载。
Dsmove
依赖于两个开关,它们可以单独使用,也可以结合在一起使用。以下命令将为
Steve Conn <SPAN lang=ZH-CN style="FONT-SIZE: 9pt; FONT-FAMILY: 新�明�w; mso-font-kerning: 0pt; mso-fareast-language: ZH-CN; mso-ascii-font-family: Ar