0

我正在使用此VBS將用戶的平面列表從一個組移動到另一個組。 目前爲止這麼好。當談到VB時,我是一個新手。我面臨的挑戰是我有20個不同的同步組(Sync01-Sync20)和20個Mig組(Mig01-Mig20)。我需要擴展識別用戶所屬的Sunc組的代碼。然後將其「翻譯」成正確的Mig組。任何人? :)VBS Active Directory(2003)將用戶從一組組移動到另一組

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" 
+0

什麼是「正確的」米格集團對於任何給定同步組?用戶可以是多個Mig或Sync組的成員嗎? –

+0

我的不好。如果用戶是Sync01的成員,那麼正確的grup是Mig01,依此類推。這些組用於控制稱爲Quest的工具的遷移流程。如果成員被添加到錯誤的組中,則遷移將失敗。我將不得不花費3-4個小時掃描日誌以找到並糾正問題。 – user2681351

回答

0

如果你想要的是從各組同步到correspondig米格基團轉移組成員,這樣的事情應該做的:

Set fso = CreateObject("Scripting.FileSystemObject") 

Set userlist = CreateObject("Scripting.Dictionary") 
userlist.CompareMode = vbTextCompare 
Set f = fso.OpenTextFile("users.txt") 
Do Until f.AtEndOfStream 
    userlist.Add f.ReadLine, True 
Loop 
f.Close 

domain = GetObject("LDAP://rootDSE").Get("defaultNamingContext") 

For i = 1 To 20 
    n = Right("0" & i, 2) 
    Set gSync = GetObject("LDAP://CN=Sync" & n & ",OU=Huset," & domain) 
    Set gMig = GetObject("LDAP://CN=Mig" & n & ",OU=Huset," & domain) 
    For Each m In gSync.Members 
    Set user = GetObject(m.ADsPath) 
    If userlist.Exists(user.sAMAccountName) Then 
     gMig.Add(m.ADsPath) 
     gSync.Remove(m.ADsPath) 
    End If 
    Next 
Next 
+0

謝謝!正如我所說,腳本並不是我的強項。我如何在原始腳本中使用這個功能?我得到了您在我的測試環境中編寫的剪輯,但這會移動所有用戶。我需要一種方法讓這段代碼遵循與我原來的文章中相同的「Users.txt」。 – user2681351

相關問題