[转帖]对活动目录的批量导入跟导出的逐步指南

[转帖]对活动目录的批量导入和导出的逐步指南

[转帖]对活动目录的批量导入和导出的逐步指南

本文引入了活动目录服务批量管理,您可以使用LDAP Data Interchange Format(LDIF,LDAP数据交换格式)工具实现这一操作,也可以使用VBScript开发系统编写简单程序实现这一操作。使用这些工具,您可以导入、导出及修改诸如用户、通讯录、组、服务器、打印机及共享文件夹的对象。

简介
在本文中,您将完成以下作业: 

l 使用LDIFDE工具完成批量操作。将Reskit域中Marketing组织单元(OU)的用户以兼容于LDIF标准格式兼容的文件格式导入。完成Marketing组织单元中所有用户的批量修改。使用LDIF创建一个新用户并删除一个用户。 

l 使用ADSI和VBScript完成批量操作。使用用ADSI和VBScript编写的脚本将Resket域中Marketing组织单元的用户导入到一个文本文件中。使用VBScript完成Marketing组织单元中所有用户的批量修改。使用VBScript创建一个新用户并删除一个用户。

需求和前提条件 
您必须在您所在网络的一个服务器上安装包括Active Directory(活动目录)在内的Windows 2000 Server操作系统。然后您可以从该服务器或运行了Windows 2000 Professional操作系统的工作站上运行Administration Tools(管理工具)。 

本文假定您已经完成了Windows 2000 Server部署通用基础架构第1部分和第2部分中的过程。 

通用基础架构文档指定了一个特殊的硬件和软件配置。如果使用的不是通用基础架构,那么您需要对该文档中的指令做适当改变。要想获取关于服务器、客户端和外设的硬件需求和兼容性的最新信息,请参看Windows 2000产品兼容性搜索页面。 

Administration Tools(管理工具)默认安装在所有基于Windows 2000的域控制器上。本指南中叙述的LDIFDE工具默认安装于服务器上,并且可以复制到任何基于Windows 2000的工作站上。您创建的VBScript程序可以从任意一台服务器或工作站上运行。 

对于本指南中的所有过程,您必须以管理员身份登录。如果用没有管理权限的帐户登录,您可能不能在活动目录中完成导入或导出操作。 

使用LDIFDE工具
LDIF(LDAP数据交换格式)是一种文件格式的Internet标准草案,该文件格式可以用于在符合LDAP标准的目录上完成批量操作。LDIF可以用于导入和导出数据,并允许在活动目录中完成添加、修改及删除等批量操作。Windows 2000操作系统中包含一个名为LDIFDE的工具,该工具可以支持基于LDIF标准的批量操作。 

使用LDIF导出Marketing组织单元中的所有对象 
您可以导出Marketing组织单元(OU)中的所有对象,该组织单元在"通用基础架构逐步指南的第1部分"中创建。本实例搜索组织单元中的特定对象并创建包含所有这些对象的一个文件。 

导出Marketing组织单元中的所有对象 

1.单击Start(开始)、选择Program(程序)、选择Accessories(附件),然后再单击Common Prompt(命令提示符)。 

2.在命令提示符状态下输入: 

ldifde -f marketing.ldf -s hq-res-dc-01-d"ou=Marketing,dc= reskit,dc=com"-psubtree-r"(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=reskit,DC=com)" 

该命令连接到名为HQ-RES-DC-01的服务器并创建对Marketin组织单元中Person类别所有对象的子树搜索,从而创建了一个名为Marketing.ldf的LDIF文件。

注意,objectCategory是用于增强搜索性能的一个索引属性。 

您可以使用该LDIF文件将Marketing组织单元所有对象批量导入到任何其他兼容于LDAP的目录中。某些属性对于其他LDAP目录可能不适用。特别是当您想要使用该机制将对象导入到其他活动目录时,某些属性属性必须被忽略掉,因为这些属性是在对象创建过程中自动生成的。(如果没有特别指出这些属性要被忽略,该操作将失败。)

例如,用于忽略这些属性的LDIFDE命令如下: 

ldifde -f marketing.ldf -s hq-res-dc-01 -d 

"ou=Marketing,dc= reskit,dc=com"-r 

>"(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=reskit,DC=com)" -m 



使用LDIF修改Marketing组织单元中的所有对象
在本例中,整个Marketing组织已经移到一个新办公地点。您可以改变州名、街名、地区及邮政编码属性,从而使用LDIF完成Marketing组织中所有用户对象的批量修改。 

修改Marketing组织单元中的所有对象 

1.单击Start(开始),选择Programs(程序),选择Accessories(附件),然后单击Command Prompt(命令提示符)。 

2.在命令提示符状态下输入以下命令提取所需条目: 

ldifde -f marketing.ldf -s hq-res-dc-01-d"ou=Marketing,dc= reskit,dc=com"-psubtree-r"(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=reskit,DC=com)" -l "l,st,streetAddress, postalCode" 

3.使用Notepad等文本编辑器编辑该LDIF文件,也就是Marketing.ldf文件。(将文件保存为.ldf文件。)

4.运行LDIFDE并将修改导入活动目录中。在命令提示符状态下,输入以下命令,然后按下回车键

ldifde -i -f marketing.ldf -s hq-res-dc-01 

5.为了验证这些条目已经经过修改,检查Active Directory Users and Computers(活动目录用户和计算机)插件。(要获取该插件的使用帮助,请参看管理活动目录的循序渐进指南。)

要获取使用LDIFDE的更多信息,可以在命令提示符状态下输入LDIFDE/?。 

注意:另一个名为CSVDE的工具可以完成与LDIFDE相同的导出功能,但该工具使用了逗号分隔文件格式。CSVDE的导入操作只能进行添加操作,CSVDE并不提供修改或删除对象的能力。CSV文件格式可被Microsoft Excel等应用程序支持。 

使用LDIF创建一个新用户

在本例中,您将使用LDIF将一个名为James Smith的新用户添加到Marketing组织单元中。 

1.启动一个文本编辑器,如Notepad等,创建一个名为Newuser.ldf的新文本文件。(将该文件保存为.ldf文件,而不是文本文件。) 

2.编辑该LDIF文件,也就是Newuse.ldf文件,添加以下文本(参看图4所示): 

dn: CN=JamesSmith,OU=Marketing,DC=reskit,DC=com 

changetype: add 

cn: James Smith Please note the stuff in parentheses …I had mentioned it last time but you haven't modified the Gif below … it is 'cn' not 'cd' 

objectClass: user 

samAccountName: James 

> givenName: James 

> sn: Smith 



3.保存并关闭该LDIF文件。 

4.运行LDIFDE并将该新用户导入到活动目录中。在Start(开始)菜单中,选择Programs(程序),选择Accessories(附件),然后选择Command Prompt(命令提示符)。输入以下命令,然后按下回车键。 

ldifde -i -f newuser.ldf -s hq-res-dc-01 

5.为了验证新用户已经创建,您可以检查Active Directory Users and Computers(活动目录用户和计算机)插件。

使用LDIF删除一个用户

在本例中,您将使用LDIF从Marketing组织单元中删除名为James Smith的用户。 

1.启动一个文本编辑器,如Notepad等,创建一个名为Deluser.ldf的新文件。 

2.编辑该LDIF文件,也就是Deluser.ldf文件,然后添加以下文本。 

dn: CN=JamesSmith,OU=Marketing,DC=reskit,DC=com 

changetype: delete 

3.运行LDIFDE将该用户从活动目录中删去。在命令提示符状态下,输入以下命令,然后按下回车键。 

ldifde -i -f deluser.ldf -s hq-res-dc-01 

4.为了验证该用户已被删除,您可以检查Active Directory Users and Computers(活动目录用户和计算机)插件。

使用VBScript和ADSI 
ADSI(活动目录服务接口)简化了目录允许应用程序的开发工作。在安装了Windows Script Host(Windows脚本容留)后,批量目录操作可以使用VBScript或Jscript?开发软件编写脚本。在本指南中,我们可以使用简单的VBScript应用程序完成前一节中描述的过程(该过程使用的是LDIF)。 

请注意,这些脚本并不包含任何错误检查,而且也不打算提供VBScript和ADSI的程序员参考手册。这里包含的所有例子假定您使用正确的证书登录到目标域的成员计算机上。您可以在ADSI中明确指定证书和目标域。详细信息请参看Platform SDK中的ADSI's penDSObject文档。 

在执行每个过程之后,要验证这些条目已经经过修改,您可以检查Active Directory Users and Computers(活动目录用户和计算机)插件。 

使用VBScript导出Marketing组织单元中的所有对象 
在本例中,您将使用诸如Notepad的文本编辑器创建一个VBScript程序。该脚本搜索Marketing组织单元并创建一个文本文件,该文件列出了所有用户对象和这些对象的某些属性。 

创建导出脚本 

1.将以下文本复制到文本编辑器中: 

'Global variables 

Dim oContainer 

Dim OutPutFile 

Dim FileSystem 



'Initialize global variables 

Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject") 

Set OutPutFile = FileSystem.CreateTextFile("marketing.txt", True) 

SetoContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com") 



'Enumerate Container 

EnumerateUsers oContainer 



'Clean up 

OutPutFile.Close 

Set FileSystem = Nothing 

Set oContainer = Nothing 



WScript.Echo "Finished" 

WScript.Quit(0) 

Sub EnumerateUsers(oCont) 

Dim oUser 

For Each oUser In oCont 

Select Case LCase(oUser.Class) 

Case "user" 



If Not IsEmpty(oUser.distinguishedName) Then 

OutPutFile.WriteLine "dn: " & oUser.distinguishedName 

End If 



If Not IsEmpty(oUser.name) Then 

OutPutFile.WriteLine "name: " & oUser.Get ("name") 

End If 

'need to do this because oUser.name would get back the Relative Distinguished name (i.e. CN=Jo Brown) 



If Not IsEmpty(oUser.st) Then 

OutPutFile.WriteLine "st: " & oUser.st 

End If 



If Not IsEmpty(oUser.streetAddress) Then 

OutPutFile.WriteLine "streetAddress: " & oUser.streetAddress 

End If 



Case "organizationalunit" , "container" 



EnumerateUsers oUser 

End Select 

OutPutFile.WriteLine 

Next 

End Sub 



2.将该文件保存为Export.vbs 

3.在命令提示符状态下输入export.vbs并按下回车键。系统将创建一个名为Marketing.txt的文件,该文件包含用户列表和这些用户的一些属性,如特异名字、名字、州名及街道地址等。

经过适当的修改,该脚本可被任何支持COM和Visual Basic技术的应用程序使用。这些应用程序包括Microsoft Visual Basic、Microsoft Excel及Microsoft Access等。脚本编程还可以容留于Internet Explorer及Internet Information Services 5.0上,它们也是Windows 2000 Server的一部分。 

使用VBScript修改Marketing组织单元中的所有对象
在本例中,Marketing组织已经搬到了一个新办公地点。您可以使用一个简单的VBScript程序完成Marketing组织中所有用户对象的批量修改操作。该脚本改变了州名、街名、地区及邮政编码属性。 

1.将以下文本复制到文本编辑器中。 

Dim 

oContainer Set oContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com") 

ModifyUsers oContainer 



'cleanup 

Set oContainer = Nothing 



WScript.Echo "Finished" 



Sub ModifyUsers(oObject) 

Dim oUser 

oObject.Filter = Array("user") 

For Each oUser in oObject 

oUser.Put "st","New York" 

oUser.Put "streetAddress","825 Eighth Avenue" 

oUser.Put "postalCode","10019" 

oUser.Put "l","New York" 

oUser.SetInfo 

Next 

End Sub 



2.将该文件保存为Modify.vbs。 

3.在命令提示符状态下,输入modify.vbs并按下回车。该操作将处理Marketing组织单元中的所有对象并修改所有用户,改变州名、街名、邮政编码及地区属性。

使用VBScript在Marketing组织单元中创建一个用户对象
在本例中,您将使用VBScript添加一个新用户到Marketing组织中。本例说明了使用ADSI和VBScript程序化访问目录的方便性。注意,在本例中只有有限的几个属性在用户创建过程中配置。 

创建脚本并添加用户 

1.将以下文本复制到文本编辑器中: 

Dim oContainer 'Parent container 

of new user Dim 



oUser 'Created user 

'Get parentcontainerSetoContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com") 

'Create user 

Set oUser = oContainer.Create("User","CN=Jo Brown") 



'Assign properties values to user 

oUser.Put "samAccountName","Jo" 

oUser.Put "givenName","Jo" 

oUser.Put "sn","Brown" 

oUser.Put "userPrincipalName","jo@reskit.com" 

oUser.SetInfo 



'Clean up 

Set oUser = Nothing 

Set oContainer = Nothing 



WScript.Echo "Finished" 

2.将文件保存为Adduser.vbs。 

3.在命令提示符状态下,输入adduser.vbs并按下回车键。该操作在Marketing组织单元中创建了一个名为Jo Brown的新用户。

使用VBScript删除一个用户

在本例中,您将使用VBScript从Marketing组织中删除一个用户。 

1.将以下文本复制到文本编辑器中: 

Dim oContainer 'Parent container of object to be 



deleted 'Get parent 

container Set oContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com") 



'Delete user 

oContainer.Delete "user","CN=Jo Brown" 



'Clean up 

Set oContainer = Nothing 



WScript.Echo "Finished" 

2.将该文件保存为Deluser.vbs。 

3.在命令提示符状态下,输入deluser.vbs并按下回车键。该操作将把用户Jo Brown从Marketing组织单元中删除。



Power By Windows&.Net Magazine国际中文版