'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Script : Zugriff auf Active Directory mittels LDAP ' ' File : 07_04_LDAP.vbs ' ' Date : 2007-06-04 - Last modified: 2007-06-05 ' ' ' ' Michael Puff - http://www.michael-puff.de ' ' ' ' Auslesen einer SQL-DB und anlegen der Konten mittels LDAP. ' ' ' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Option Explicit const CAPTION = "07_04_LDAP.vbs" ' SQL Variablen & Konstanten const CONSTR = "driver=MySQL ODBC 3.51 Driver;server=127.0.0.1;uid=root;pwd=;database=Benutzerverwaltung2;option=NUM" Dim adoDataCom Dim rs ' LDAP Variablen & Konstanten const LDAPPATH = "LDAP://127.0.0.1/cn=Users,dc=bitwerk,dc=com" const USERADMIN = "cn=Administrator,cn=Users,dc=bitwerk,dc=com" const PWADMIN = "bitwerk4ovm" Dim adsNameSpace Dim adsUsers Dim UserObj Dim NewUser Dim strDBUser Dim strPWD Dim strLDAPUser Dim bAlreadyExists Dim s ' Datenbank öffnen Set adoDataCom = CreateObject("ADODB.Connection") adodataCom.Open(CONSTR) ' an LDAP Anmelden Set adsNameSpace = GetObject("LDAP:") Set adsUsers = adsNameSpace.OpenDSObject(LDAPPATH, UserAdmin, PWADMIN, 0) private Sub AddUser(Username, PWD) Set NewUser = adsUsers.Create("user", "cn=" & Username & "") NewUser.Put "samAccountName", Username NewUser.Displayname = Username NewUser.SetInfo ' Passwort setzen und Konto aktivieren ' NewUser.SetPassword PWD NewUser.AccountDisabled = False NewUser.SetInfo Set NewUser = Nothing end Sub Set rs = adoDataCom.Execute("SELECT Benutzername, Passwort FROM benutzer") ' Schleife über ausgelesene Benutzer in DB While not rs.eof ' Benutzer aus DB holen strDBUser = rs.fields.item("Benutzername") strPWD = rs.fields.item("Passwort") ' Flag zurücksetzen bAlreadyExists = False ' Schleife über alle vorhandenen LDAP-Benutzer For Each UserObj in adsUsers ' Benutzer aus AD holen strLDAPUser = UserObj.Name ' Wenn Benutzer vorhanden Flag setzen und aus Schleife raus If "CN=" + strDBUser = strLDAPUser Then bAlreadyExists = True Exit For End If Next If bAlreadyExists = False Then AddUser strDBUser, strPWD Else MsgBox "Benutzer " & strDBUser & " existiert schon", 0, CAPTION End If ' nächster Datensatz rs.MoveNext Wend rs.Close s = "" ' Kontrollausgabe Set UserObj = Nothing For Each UserObj in adsUsers s = s & UserObj.Name & chr(13) Next MsgBox s, 0, CAPTION