【发布时间】:2013-08-20 08:25:00
【问题描述】:
我正在使用此 VBS 将用户的平面列表从一个组移动到另一个组。 到现在为止还挺好。我是 VB 的菜鸟。挑战在于我有 20 个不同的同步组 (Sync01-Sync20) 和 20 个 Mig 组 (Mig01-Mig20)。我需要扩展识别用户所属的女巫 Sunc 组的代码。然后将其“翻译”为正确的 Mig 组。任何人? :)
DIM objGroup, objGroup2, objRootLDAP, objFSO, objInput, objConnection, objCommand
DIM strUser
On Error Resume Next
Set objRootLDAP = GetObject("LDAP://rootDSE")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInput = objFSO.OpenTextFile("users.txt")
Set objGroup = GetObject("LDAP://cn=Sync01,ou=Huset,dc=bb,dc=net")
Set objGroup2 = GetObject("LDAP://cn=Mig01,ou=Huset,dc=bb,dc=net")
Do Until objInput.AtEndOfStream
strUser = ObjInput.ReadLine
objCommand.CommandText = "<LDAP://dc=bb,dc=net>;(&(objectCategory=person)(sAMAccountName=" & strUser & "));distinguishedName,userAccountControl;subtree"
Set objRecordSet = objCommand.Execute
If objRecordSet.RecordCount = 0 Then
MsgBox strUser & " was not found!" & VbCrLf & "Skipping", VbOkOnly,"User Not Found"
Else
strDN = objRecordSet.Fields("distinguishedName")
Set objUser = GetObject("LDAP://" & strDN)
objGroup.Remove(objUser.AdsPath)
objGroup2.Add(objUser.AdsPath)
End If
Loop
WScript.Echo "Complete"
【问题讨论】:
-
任何给定同步组的“正确”Mig 组是什么?一个用户可以是多个 Mig 或 Sync 组的成员吗?
-
我的错。如果用户是 Sync01 的成员,那么正确的 grup 是 Mig01,依此类推。这些组用于控制名为 Quest 的工具的迁移流程。如果将成员添加到错误的组,则迁移将失败。而且我将不得不花费 3-4 小时扫描日志来查找和纠正问题。
标签: vbscript active-directory windows-server-2003 active-directory-group