Jump to content

Viele Benutzer per Script anlegen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

ich möchte einem benutzer eine grupp ezuweisen...leider klappt das gar nihct.

 

hier mal mein quelltext


Dim fso, f, Zeile, Feld
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile ("user.txt",1,0)

Do while not f.AtEndOfLine
Zeile = f.readLine
Feld = split(Zeile,",")
Benutzer = Feld(0)
Vorname = Feld(1)
Nachname = Feld(2)
Passwort = Feld(3)

Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Loop
f.Close
Wscript.Quit(0)

Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Dim ouo, b
Set ouo = GetObject("LDAP://OU=Benutzer,DC=kaputt,DC=zz")
Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)

Dim WshShell, ret
Set WshShell = WScript.CreateObject("WScript.Shell")

b.Put "sAMAccountName", Benutzer
b.Put "displayName", Vorname & " " & Nachname
b.Put "givenName", Vorname
b.Put "sn", Nachname
b.Put "userPrincipalName", Benutzer & "@kaputt.zz"
b.Put "description", "Projektmitarbeiter"
b.Put "scriptPath", "start.cmd"

b.TerminalServicesProfilePath = "\\dc\tsprofile$\" & Benutzer
b.TerminalServicesHomeDirectory = "\\dc\userhome$\" & Benutzer
b.TerminalServicesHomeDrive = "H:"

b.SetInfo
b.SetPassword Passwort
b.AccountDisabled = False
b.SetInfo

WScript.Sleep(1000)
ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)

set objuser = GetObject("LDAP:// CN="& Nachname &"\, "& Vorname,OU=Benutzer,DC=kaputt,DC=zz")
set objgroup = GetObject("LDAP:// CN=TS-User,OU=Gruppen,DC=kaputt,DC=zz")

objgroup.add objuser.adspath
objgroup.setinfo


End Sub

 

es wird mit dem fehler beendet.

 

---------------------------

Windows Script Host

---------------------------

Skript: C:\Dokumente und Einstellungen\Administrator\Desktop\script.vbs

Zeile: 46

Zeichen: 94

Fehler: Nicht abgeschlossene Zeichenfolgenkonstante

Code: 800A0409

Quelle: Kompilierungsfehler in Microsoft VBScript

 

---------------------------

OK

---------------------------

Link zu diesem Kommentar

danke..das war unteranderem ein fehler.

 

desweiteren kommt es darauf an wie im AD die Benutzer angezeigt werden.

bei mir Nämlich so "Vorname Nachname" man beachte die Leerzeile.

 

laut dem Script von mit soll es aber so angezeigt werden "Vorname,Nachname"

 

deshalb hat es nicht gefunzt...hier also nochmal die komlpette zeile.

 


set objuser = GetObject("LDAP://CN="& Vorname &" "& Nachname &",OU=Benutzer,DC=kaputt,DC=zz")

jetzt hab ich noch das problem postfächer einzurichten..wie geht das ??

 

hab hier nun alle seiten druch gelesen, aber nichts gefunden

 

laut internet wohl mit CreateMailbox...hab da auch schon was gefunden, aber steige dort nicht ganz durch...

 

hier mal ein auszug

 

Set objMailbox = objUser

               objMailbox.CreateMailbox "LDAP://CN=" & MDBName & _
                              ",CN=" & StorageGroup & _
                              ",CN=InformationStore" & _
                              ",CN=" & Server & _
                              ",CN=Servers" & _
                              ",CN=" & AdminGroup & _
                              ",CN=Administrative Groups" & _
                              ",CN=" & Organization & _
                              ",CN=Microsoft Exchange,CN=Services" & _
                              ",CN=Configuration," & DomainDN

objUser.SetInfo

Link zu diesem Kommentar
  • 11 Monate später...
Erst mal fettes danke das sich jemand dieser Sache mit annimmt, da ich ja nicht wirklich der Script profi bin bin ich sehr dankbar für die Hilfe. :jau:

Da ich denn Server gerade nicht an der Hand habe spiele ich das mal so durch :

 

edit 1 "VMware sei dank ich kanns doch testen"

aber was soll ich sagen es klappt so nicht, wenn ich das richtig sehe dann muss ich die Gruppe ja aus der TXT lesen dazu sollte sie deffiniert sein. was ich in zeile 13 ja mache

GroupObj = Feld(3)

aber genau da habe ich schon denn Fehler das das Script stopt

 

 

Fehlermeldung : Index außerhalb des gültigen bereichs.

 

User Datei

 

Name1,Vorname1, Password1,Gruppe1

Name2,Vorname2, Password2,Gruppe2

 

 

Script

Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile ("user.txt",1,0)

 

Do while not f.AtEndOfLine

Zeile = f.readLine

Feld = split(Zeile,",")

 

Benutzer = Feld(1)

Vorname = Feld(1)

Nachname = Feld(0)

Passwort = Feld(2)

GroupObj = Feld(3)

Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort,GroupOb)

Loop

f.Close

Wscript.Quit(0)

 

Sub BenuntzerAnlegen (Benutzer,Vorname,Nachname,Passwort)

Dim ouo, b

Set ouo = GetObject("LDAP://OU=user,DC=domaene,DC=de")

Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)

Dim WshShell, ret

Set WshShell = WScript.CreateObject("WScript.Shell")

b.Put "sAMAccountName", Benutzer

b.Put "userPrincipalName", Benutzer & "@domaene.de"

b.Put "profilePath", "\\server\daten\profile\" & Benutzer

b.Put "homeDirectory", "\\server\daten\home\" & Benutzer

b.Put "homeDrive", "U:"

b.SetInfo

b.SetPassword Passwort

b.AccountDisabled = False

b.SetInfo

WScript.Sleep(1000)

ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)

' Die Gruppe wird gesucht und als Ziel definiert.

Set GroupObj = GetObject("" &"WinNT://" & _

DomainString &"/"& GroupString &"")

' Der User wird in die entsprechende Gruppe integriert.

GroupObj.Add (""&"WinNT://"& _

DomainString &"/"& UserString &"")

Set DomainObj = Nothing ' Variable wird frei gegeben '

Set GroupObj = Nothing ' Variable wird frei gegeben '

End Sub

 

 

Ich werde das morgen mal testen, und dann mal einen Staus geben wie das so ausieht und ob ich noch ein Problem habe, bzw wie ich es beseitigt habe, sollte jemandem was auffallen kann er mich ja schon mal drauf aufmerksam machen

:)

Spart immer wieder Stundenlanges sitzen weil man den Fehler mal wieder selber nicht sieht.

 

Ich bin selten im Forum darum weiss ich nicht ob ich das richtig eintrage.

Ich habe das mit den Gruppen nicht richtig verstanden. Könnte mir bitte jemand ein Bispiel zeigen wo z.B. die user in die vorhandene Gruppe Test integriert werden.

Danke!

Link zu diesem Kommentar
  • 1 Jahr später...

Guten Tag zusammen.

Allen vorweg ein großes Lob und einen rießen dank an das Script.

Funktioniert tadellos (mit Ausnahme dem was ich noch fragen werde).

Leider muss ich diesen Himmelalten Thread wieder ausgraben. Habe trotz SuFu und gidf :D keinen vergleichbar rießigen Informationspool gefunden.

 

So nun zu meiner Frage.

Diese Frage wurde schon öfter gestellt, nur habe ich keine Antwort gelesen (bin schon seit 4 Uhr morgens am arbeiten, also glaube ich es auch sofort, dass ich es bei den 19 Seiten überlesen habe)

 

Gibt es die möglichkeit eine Abfrage einzubauen die abfragt ob es den Benutzer schon gibt und wenn ja dann einen sufix anhängt (z.b.: testuser, testuser1, testuser2 usw.)

Ich denke die Möglichkeit gibt es sicher, nur wie würde die aussehen?

bin mit VB nicht so gut vertraut und dann noch in verbindung mit AD (was ich auch das erste mal verwende)

 

Nur zur Info wieso ich das brauche:

Ich brauche es lediglich zum testen meine Java-Applikation. Die diverse einträge editiert. Und jetzt ein create JSP zu erstellen (wo man schon so ein gutes script hat *daumen hoch*) is auch bisschen viel aufwand.

 

Mit freundlichen Grüßen

Java 4 Fun :cool:

Link zu diesem Kommentar
  • 3 Monate später...

Hi,

 

geiler Thread, hat mir sehr geholfen, aber im Moment bin ich kurz davor meinen PC physisch zu misshandeln.

 

Ich habe ein Basisscript nur mit User, Passwort, Vorname, Nachname erstellt, funktioniert auch wunderbar. Dann habe ich das Script Stück für Stück erweitert, zwischendurch immer wieder getestet. Jetzt, ganz am Ende funktioniert es nicht mehr und auch wenn ich einen RollBack auf den letzten, definitiv funktionsfähigen Stand machen, bekomme ich eine Fehlermeldung. Frei nach Epi IV: "Helft mir MCSE-Wan Kenobi, ihr seid meine letzte Hoffnung!" :D

 

 

Script:

 

Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile ("test.txt",1,0)

 

Do while not f.AtEndOfLine

Zeile = f.readLine

Feld = split(Zeile,",")

Benutzer = Feld(0)

Vorname = Feld(1)

Nachname = Feld(2)

Passwort = Feld(3)

Strasse = Feld(4)

PLZ = Feld(5)

Ort = Feld(6)

Position = Feld(7)

Abteilung = Feld(8)

Telefon = Feld(9)

Company = Feld(10)

Mail = Feld(11)

Fax = Feld(12)

Mobil = Feld(13)

Web = Feld(14)

 

 

 

Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort,Strasse,PLZ,Ort,Position,Abteilung,Telefon,Company,Mail,Fax,Mobil,Web)

Loop

f.Close

Wscript.Quit(0)

 

Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort,Strasse,PLZ,Ort,Position,Abteilung,Telefon,Company,Mail,Fax,Mobil,Web) <- Das Leerzeichen im Fax macht das Forum hier.

Dim ouo, b

 

'MsgBox(Benutzer)

'exit sub

 

Set ouo = GetObject("LDAP://OU=yyy Logistik,DC=xxx,DC=local")

Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)

Dim WshShell, ret

Set WshShell = WScript.CreateObject("WScript.Shell")

b.Put "sAMAccountName", Benutzer

b.Put "displayName", Vorname & " " & Nachname

b.Put "givenName", Vorname

b.Put "sn", Nachname

b.Put "userAccountControl", 66082

b.Put "userPrincipalName", Benutzer & "@xxx.local"

b.Put "streetAddress", Strasse

b.Put "postalCode", PLZ

b.Put "l", Ort

b.Put "title", Position

b.Put "department", Abteilung

b.Put "telephoneNumber", Telefon

b.Put "company", Company

b.Put "mail", Mail

b.Put "facsimileTelephoneNumber", Fax

b.Put "mobile", Mobil

b.Put "wwwHomePage", Web

b.Put "pwdLastSet", 0

b.SetInfo

b.SetPassword Passwort

b.AccountDisabled = False

b.SetInfo

WScript.Sleep(1000)

End Sub

 

 

Zu übergebende Zeile aus dem Textfile:

 

h_t*******,H****,T*******,start123,A* E****** 1,*****,R*******,Niederlassungsleiter R*******,,+49 (****) *** ***,S******** L******* GmbH,h****.t*******@**********.de,+49 (****) **** ***, +49(1761) **** ***,http://www.*********.de

 

 

Fehlermeldung:

 

Zeile 59

Die Attributsyntax, die dem Verzeichnisdienst übergeben

wurde, ist ungültig.

 

 

Ich hoffe einer der Obercracks überfliegt das und sieht sofort den Fehler.

 

Gruss,

 

Benni

Link zu diesem Kommentar
  • 3 Monate später...

Hallo Thorgood

 

Ich habe das Script angepasst. Lief ziemlich gut bis zu einem bestimmten Punkt. Auf Zeile 43 habe ich nun eine Fehlermeldung, die ich einfach nicht nachvollziehen kann.

Der Fehler wird beim Befehl "b.SetInfo" aufgerufen.

 

Ich erhalte ein Windows Script Host Fenster mit folgender Meldung

Skript: c:\work\useradd.vbs

Zeile: 43

Zeichen: 1

Fehler: Die Attributsyntax, die dem Verzeichnisdienst übergeben wurde, ist ungültig.

 

Code: 8007200B

Quelle: Active Directory

 

 

 

Hier mein Script:

 

Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile ("user.txt",1,0)

 

Do while not f.AtEndOfLine

Zeile = f.readLine

Feld = split(Zeile,",")

Benutzer = Feld(0)

Vorname = Feld(1)

Nachname = Feld(2)

Passwort = Feld(3)

Mail = Feld(4)

Rufnummer = Feld(5)

Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)

Loop

f.Close

Wscript.Quit(0)

 

Sub BenuntzerAnlegen (Benutzer,Vorname,Nachname,Passwort)

Dim ouo, b

Set ouo = GetObject("LDAP://OU=User,OU=Zürich,DC=testdom,DC=loc")

Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)

Dim WshShell, ret

Set WshShell = WScript.CreateObject("WScript.Shell")

b.Put "sAMAccountName", Benutzer

b.Put "givenName", Vorname

b.Put "sn", Nachname

b.Put "displayName", Vorname & Nachname

b.put "telephoneNumber", Rufnummer

b.put "accountExpires", "nie"

b.put "userAccountControl", "[NormalAccount, NoPasswordExpiration]"

b.Put "userPrincipalName", Benutzer & "@testdom.loc"

b.Put "profilePath", "\\S22\profile$\" & Benutzer

b.Put "homeDirectory", "\\S22\home$\" & Benutzer

b.Put "homeDrive", "H:"

b.Put "mail", Mail

b.Put "c", "CH"

b.Put "co", "Schweiz"

b.Put "l", "Zürich"

b.Put "postalCode", "8000"

b.Put "st", "Zürich"

b.Put "streetAddress", "Seestrasse 19" & vbCrlf & "" & vbCrlf

b.SetInfo

b.SetPassword Passwort

b.AccountDisabled = False

b.SetInfo

WScript.Sleep(1000)

ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)

End Sub

 

 

Kannst du mir dabei helfen? Was ist die Ursache dieses Problems?

 

Gruss Ramon

Link zu diesem Kommentar

Hi Leute,

 

erstmal vielen Dank für geniale Script

 

so sieht meine aus:

Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile ("kundendaten.txt",1,0)

 

Do while not f.AtEndOfLine

Zeile = f.readLine

Feld = split(Zeile,",")

Vorname = Feld(0)

Nachname = Feld(1)

Titel = Feld(2)

Anmeldename= Feld(3)

OU= Feld(4)

Passwort =Feld(5)

Telefon= Feld(6)

Call BenuntzerAnlegen(Vorname,Nachname,Titel,Anmeldename,OU,Passwort,Telefon)

Loop

f.Close

Wscript.Quit(0)

 

Sub BenuntzerAnlegen(Vorname,Nachname,Titel,Anmeldename,OU,Passwort,Telefon)

Dim ouo, b

Set ouo = GetObject("LDAP://OU=Marketing,DC=nam,DC=nguyen,Dc=com")

Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)

Dim WshShell, ret

Set WshShell = WScript.CreateObject("WScript.Shell")

b.Put "sAMAccountName", Vorname

b.Put "displayName", Vorname & " " & Nachname

b.Put "givenName", Vorname

b.Put "sn", Nachname

b.Put "userAccountControl", 66082

b.Put "userPrincipalName", Benutzer & "@nam.nguyen.com"

b.Put "profilePath", "\\W2008TEST\daten\profile\" & Benutzer

b.Put "homeDirectory", "\\W2008TEST\daten\home\" & Benutzer

b.Put "homeDrive", "C:""

b.SetPassword TestPW!

b.AccountDisabled = False

b.SetInfo

WScript.Sleep(3)

ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)

End Sub

 

 

allerdings krieg ich diese Fehlermeldung

Zeile 35 / Zeichen 21 / Anweisungsende erwartet

Code 800A0401

 

Ich bin mit meinem Latein am Ende

Wär super ,wenn mir da jemanden helfen kann

 

LG

Nam

bearbeitet von vohinh134
Link zu diesem Kommentar

Moin,

 

wenn man skriptet, sollte man auch einige Skriptgrundlagen beherrschen. Sonst führt das nicht weit. Was tust du denn, wenn dein Skript ein echtes Problem verursacht?

 

b.Put "homeDrive", "C:""

b.SetPassword TestPW!

 

Hinter dem C: stehen zwei Anführungsstriche, nimm eins davon weg.

Und das Kennwort solltest du in Anführungsstriche setzen, sonst nimmt VBS an, dass "TestPW" eine Variable sei und scheitert am nachfolgenden Ausrufezeichen.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo zusammen.

 

Kann mir da jemand helfen? Komme nicht weiter und müsste dieses Skript demnächst bereit haben. Hier nochmals einen Auszug aus meinem letzten Beitrag....

 

 

Ich habe das Script angepasst. Lief ziemlich gut bis zu einem bestimmten Punkt. Auf Zeile 43 habe ich nun eine Fehlermeldung, die ich einfach nicht nachvollziehen kann.

Der Fehler wird beim Befehl "b.SetInfo" aufgerufen.

 

Ich erhalte ein Windows Script Host Fenster mit folgender Meldung

Skript: c:\work\useradd.vbs

Zeile: 43

Zeichen: 1

Fehler: Die Attributsyntax, die dem Verzeichnisdienst übergeben wurde, ist ungültig.

 

Code: 8007200B

Quelle: Active Directory

 

 

 

Hier mein Script:

 

Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.OpenTextFile ("user.txt",1,0)

 

Do while not f.AtEndOfLine

Zeile = f.readLine

Feld = split(Zeile,",")

Benutzer = Feld(0)

Vorname = Feld(1)

Nachname = Feld(2)

Passwort = Feld(3)

Mail = Feld(4)

Rufnummer = Feld(5)

Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)

Loop

f.Close

Wscript.Quit(0)

 

Sub BenuntzerAnlegen (Benutzer,Vorname,Nachname,Passwort)

Dim ouo, b

Set ouo = GetObject("LDAP://OU=User,OU=Zürich,DC=testdom,DC=loc")

Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)

Dim WshShell, ret

Set WshShell = WScript.CreateObject("WScript.Shell")

b.Put "sAMAccountName", Benutzer

b.Put "givenName", Vorname

b.Put "sn", Nachname

b.Put "displayName", Vorname & Nachname

b.put "telephoneNumber", Rufnummer

b.put "accountExpires", "nie"

b.put "userAccountControl", "[NormalAccount, NoPasswordExpiration]"

b.Put "userPrincipalName", Benutzer & "@testdom.loc"

b.Put "profilePath", "\\S22\profile$\" & Benutzer

b.Put "homeDirectory", "\\S22\home$\" & Benutzer

b.Put "homeDrive", "H:"

b.Put "mail", Mail

b.Put "c", "CH"

b.Put "co", "Schweiz"

b.Put "l", "Zürich"

b.Put "postalCode", "8000"

b.Put "st", "Zürich"

b.Put "streetAddress", "Seestrasse 19" & vbCrlf & "" & vbCrlf

b.SetInfo

b.SetPassword Passwort

b.AccountDisabled = False

b.SetInfo

WScript.Sleep(1000)

ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)

End Sub

 

 

Kannst du mir dabei helfen? Was ist die Ursache dieses Problems?

 

Gruss Ramon

Link zu diesem Kommentar

Moin,

 

mal abgesehen davon, das man beim skriptgesteuerten Zugriff auf AD wirklich wissen sollte, was man tut ...

 

b.put "accountExpires", "nie"

b.put "userAccountControl", "[NormalAccount, NoPasswordExpiration]"

b.Put "co", "Schweiz"

b.Put "streetAddress", "Seestrasse 19" & vbCrlf & "" & vbCrlf

 

diese Felder sehen nicht gut aus. accountExpires nimmt keine Textwerte entgegen, userAccountControl auch nicht. Bei co steht, wenn ich mich richtig erinnere, ein Code und auch keine Zeichenkette (weshalb man das meist weglässt). Und bei streetAddress hängst du Zeichen an, die nicht in den Wert gehören.

 

Gruß, Nils

Link zu diesem Kommentar
  • 8 Monate später...

Hi,

 

hab auch mal ne Frage zu diesem Script. Hab das an meine vorhandene Domain angepasst. Und es funktioniert auch "fast" alles. Die benutzer werden angelegt. Die Ordner theoretisch auch.... Zumindest wenn ich die verz.cmd alleine ausführe. Wenn ich aber das script starte, endet es immer mit der Fehlrermeldung "Das System kann die angegebene Date nicht finden." Und als Zeile, die in der die Übergabe zur verz.cmd steht. Egel ob ich nur de Datei angebe oder mit Pfad.

 

Jemand eine Idee?

Link zu diesem Kommentar

Moin "Bamboole",

 

da dieser Thread schon sehr lang und sehr alt ist, wäre es hilfreich, wenn du genau angibst, von welchem Skript du gerade sprichst und wie dein Code genau aussieht. Noch besser wäre es dann künftig, wenn du bei einer neuen Frage (denn das ist es) einen neuen Thread eröffnest und dabei ggf. auf einen vorhandenen Thread verweist.

 

Also bitte deinen Code posten und genau angeben, wo wann der Fehler auftritt. Danke.

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.




×
×
  • Neu erstellen...