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","[email protected]"
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组织单元中删除。