depravity
Goto Top

Informationen auslesen und damit Benutzer im AD erstellen.

Hallo,

ich habe in der Schule die Aufgabe bekommen ein VBscript zu schreiben, welches zunächst verschiedene Benutzerinformationen aus einer SQL-Datenbank ausliest. Mit diesen Benutzerinformationen sollen über eine Schleife die Benutzer im Acitve Directory angelegt werden. Das Script habe ich soweit erstellt. Nur leider bekomme ich immer wieder die Fehlermeldung aus Zeile 20 "Es wurde eine ungültige dn-Syntax angegeben." Ich hoffe ihr könnt mir etwas Hilfestellung zu diesem Problem zukommen lassen.

Hier der Quellcode:

strConnection ="dbzugriff"
Set adoDataConn= CreateObject("ADODB.Connection")
adoDataConn.open strConnection
strQuery= "SELECT * FROM benutzerneu;"
Set query = adoDataConn.execute(strQuery)
strPfad = "LDAP://192.168.1.1/ou=test,dc=schule"
strAdmin = "cn=Administrator,cn=Users,dc=schule"
pwd= InputBox("Bitte geben Sie das Administratorkennwort ein:","Authentifizierung","Passwort")
Set adsNamenraum = GetObject("LDAP:")
Set adsContainer = adsNamenraum.openDSObject(strPfad,strAdmin,pwd,0)
Do While Not query.eof
benutzername = CStr(query.fields.item("benutzername"))
vorname = CStr(query.fields.item("vorname"))
nachname = CStr(query.fields.item("nachname"))
passwort = CStr(query.fields.item("passwort"))
beschreibung = CStr(query.fields.item("beschreibung"))
Set adsUser = adsContainer.Create("user", benutzername)
bla = "cn=" & benutzername
adsUser.put "sAMAccountName", bla
adsUser.setInfo
adsUser.accountDisabled = false
adsUser.sn = nachname
adsUser.givenName = vorname
adsUser.description = beschreibung
adsUser.setPassword passwort
adsUser.setInfo
query.moveNext 'Nächster Antwortdatensatz
MsgBox "Der Benutzer " & benutzername & "wurde erfolgreich angelegt."
Loop
query.close

Grüße depra

Content-Key: 147379

Url: https://administrator.de/contentid/147379

Printed on: April 19, 2024 at 13:04 o'clock

Member: bastla
bastla Jul 22, 2010 at 07:44:59 (UTC)
Goto Top
Hallo depravity und willkommen im Forum!

Unter der Annahme, dass im Feld "benutzername" kein"cn=" enthalten ist, würde ich die Zeilen 17 bis 19 (ließen sich übrigens bei Verwendung von ""-Formatierung leichter lokalisieren) auf
bla = "cn=" & benutzername  
Set adsUser = adsContainer.Create("user", bla)  
adsUser.put "sAMAccountName", benutzername  
ändern ...

Grüße
bastla
Member: depravity
depravity Jul 22, 2010 at 08:34:51 (UTC)
Goto Top
Hallo,

genau das war der Fehler an dieser Stelle. Dankeschön für den Tipp.

Einziges Problem was jetzt noch besteht ist dass das Script bei der Quellcodezeile
"adsUser.setPassword passwort"
die Fehlermeldung "Mindestens ein Eingabeparameter ist ungültig" ausgibt.

Der Befehl an sich müsste doch richtig sein und wenn ich die Variable "Passwort" ausgeben lasse stimmt auch alles.

Grüße
depra
Member: depravity
depravity Jul 22, 2010 at 12:08:12 (UTC)
Goto Top
Hab den Fehler gefunden. Das Script läuft nun durch.
Nochmals dankeschön für die Hilfe!

Grüße
depra
Member: bastla
bastla Jul 22, 2010 at 12:29:12 (UTC)
Goto Top
Hallo dapravity!
Hab den Fehler gefunden.
Auch dafür sollst Du ja üben ... face-wink

Woran lag's denn?

Grüße
bastla
Member: depravity
depravity Jul 22, 2010 at 12:46:19 (UTC)
Goto Top
Also ich vermute dass die Passwörter aus der Datenbank nicht den Vorgaben aus der Default Domain Policy entsprochen haben. Nachdem ich dann etwas längere Passwörter verwendet habe ging es. Allerdings habe ich jetzt das Problem, dass die Fehlermeldung nach dem ersten Schleifendurchlauf erneut auftritt. Der erste Benutzer wird ohne Probleme angelegt und beim zweiten Benutzer bricht das Script bei adsUser.setPassword ab. Warum es das tut, daran rätsel ich gerade noch.

Grüße
depra
Member: RedRabbit
RedRabbit Jul 23, 2010 at 05:19:21 (UTC)
Goto Top
// edit sagt, meine Idee war Blödsinn. Sorry fürs posten.