- 使用LDIFDE工具完成批量操作。将Reskit域中Marketing组织单元(OU)的用户以兼容于LDIF标准格式兼容的文件格式导入。完成Marketing组织单元中所有用户的批量修改。使用LDIF创建一个新用户并删除一个用户。
- 使用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程序可以从任意一台服务器或工作站上运行。
对于本指南中的所有过程,您必须以管理员身份登录。如果用没有管理权限的帐户登录,您可能不能在活动目录中完成导入或导出操作。
LDIF(LDAP数据交换格式)是一种文件格式的Internet标准草案,该文件格式可以用于在符合LDAP标准的目录上完成批量操作。LDIF可以用于导入和导出数据,并允许在活动目录中完成添加、修改及删除等批量操作。Windows 2000操作系统中包含一个名为LDIFDE的工具,该工具可以支持基于LDIF标准的批量操作。
使用LDIF导出Marketing组织单元中的所有对象
您可以导出Marketing组织单元(OU)中的所有对象,该组织单元在"通用基础架构逐步指南的第1部分"中创建。本实例搜索组织单元中的特定对象并创建包含所有这些对象的一个文件。
导出Marketing组织单元中的所有对象
该命令连接到名为HQ-RES-DC-01的服务器并创建对Marketin组织单元中Person类别所有对象的子树搜索,从而创建了一个名为Marketing.ldf的LDIF文件。(参看图1)
注意,objectCategory是用于增强搜索性能的一个索引属性。
图1。创建一个LDIF文件
- 您可以使用该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
在本例中,整个Marketing组织已经移到一个新办公地点。您可以改变州名、街名、地区及邮政编码属性,从而使用LDIF完成Marketing组织中所有用户对象的批量修改。
修改Marketing组织单元中的所有对象
图2。编辑某个迁移的属性
图3。将修改导入活动目录
要获取使用LDIFDE的更多信息,可以在命令提示符状态下输入LDIFDE/?。
注意:另一个名为CSVDE的工具可以完成与LDIFDE相同的导出功能,但该工具使用了逗号分隔文件格式。CSVDE的导入操作只能进行添加操作,CSVDE并不提供修改或删除对象的能力。CSV文件格式可被Microsoft Excel等应用程序支持。
在本例中,您将使用LDIF将一个名为James Smith的新用户添加到Marketing组织单元中。
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
图4。向Marketing组织单元添加一个新用户
在本例中,您将使用LDIF从Marketing组织单元中删除名为James Smith的用户。
dn: CN=JamesSmith,OU=Marketing,DC=reskit,DC=com
changetype: delete
图5。从组织单元中删除James Smith
ldifde -i -f deluser.ldf -s hq-res-dc-01
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组织单元并创建一个文本文件,该文件列出了所有用户对象和这些对象的某些属性。
创建导出脚本
'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
经过适当的修改,该脚本可被任何支持COM和Visual Basic技术的应用程序使用。这些应用程序包括Microsoft Visual Basic、Microsoft Excel及Microsoft Access等。脚本编程还可以容留于Internet Explorer及Internet Information Services 5.0上,它们也是Windows 2000 Server的一部分。
在本例中,Marketing组织已经搬到了一个新办公地点。您可以使用一个简单的VBScript程序完成Marketing组织中所有用户对象的批量修改操作。该脚本改变了州名、街名、地区及邮政编码属性。
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
在本例中,您将使用VBScript添加一个新用户到Marketing组织中。本例说明了使用ADSI和VBScript程序化访问目录的方便性。注意,在本例中只有有限的几个属性在用户创建过程中配置。
创建脚本并添加用户
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"
在本例中,您将使用VBScript从Marketing组织中删除一个用户。
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"
原文地址 http://www.microsoft.com/china/windows2000/library/planning/activedirectory/bulksteps.asp