rakeem2001
Goto Top

Script zur Autogenerierung von Usern im ADS unter W2K3 Server

Servus,

ich falle gleich mal mit der Tür ins Haus, ich soll für einen W2K3 Server Testuser erstellen, allerdings nicht 10 oder 20, sondern 1000. Darum wollte ich fragen, ob jemand irgendeine Idee zu diesem Thema hat, habe sowas leider noch nie vorher gemacht und wüßte eben gerne, ob man das ganze per Script lösen kann...
Ich brauche diese Menge an User um ein Tool zu testen, welches das ADS ausliest und gegebenfalls Daten wiederherstellt.

Hoffe mir kann jemand weiterhelfen.

THX im vorraus

Gruß René

Content-Key: 14915

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

Printed on: April 24, 2024 at 11:04 o'clock

Member: HedgeHog
HedgeHog Aug 25, 2005 at 12:25:22 (UTC)
Goto Top
Google sagt:

1. Teil user.txt
---
user1,Vorname 1,Nachname 1,pwd1
user2,Vorname 2,Nachname 2,pwd2
---

2. Teil - VB 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(2)
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,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)
End Sub

3. Teil - Verz.cmd
---
md \\server\daten\home\%1
echo J | cacls \\server\daten\home\%1 /C /E /G Administratoren:F
echo J | cacls \\server\daten\home\%1 /C /E /G domaene\%1:F
echo J | cacls \\server\daten\home\%1 /C /E /R Jeder
md \\server\daten\profile\%1
echo J | cacls \\server\daten\profile\%1 /C /E /G Administratoren:F
echo J | cacls \\server\daten\profile\%1 /C /E /G domaene\%1:F
echo J | cacls \\server\daten\profile\%1 /C /E /R Jeder
Member: Rakeem2001
Rakeem2001 Aug 26, 2005 at 06:11:51 (UTC)
Goto Top
Vielen Dank, ich hab zwar gestern auch gegoogelt aber nichts gefunden... Kenne mich einfach nicht genug in dieser Materie aus.

Nochmals Danke, werde ich gleich mal umsetzen!!!

THX
Member: Rakeem2001
Rakeem2001 Aug 29, 2005 at 07:29:54 (UTC)
Goto Top
So, jetzt war ich ja am Freitag so optimistisch, und nun habe ich doch noch ein ganz tolles Problem:
Beim ausführen bekomme ich eine System Exception und zwar an der Stelle, wo er die ouo LDAP Connection aufbauen will.
Liegt das nun daran das mir eine Komponente fehlt, oder habe ich was falsch gemacht... Ich habe allerdings jetzt alles in ein Form gepackt... Wahrscheinlich ist es meine Schuld.

Hier mein Quellcode:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fso, f, Zeile, Feld
fso = CreateObject("Scripting.FileSystemObject")
f = fso.OpenTextFile("user.txt", 1, 0)

Dim Benutzer, Vorname, Nachname, Passwort
Do While Not f.AtEndOfLine
Zeile = f.readLine
Feld = Split(Zeile, ",")
Benutzer = Feld(0)
Vorname = Feld(1)
Nachname = Feld(2)
Passwort = Feld(2)
Call BenuntzerAnlegen(Benutzer, Vorname, Nachname, Passwort)
Loop
f.Close()
End Sub

Sub BenuntzerAnlegen(ByVal Benutzer, ByVal Vorname, ByVal Nachname, ByVal Passwort)
Dim ouo, b
ouo = GetObject("LDAP://OU=user,DC=domaene,DC=de")
b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)
Dim WshShell, ret
WshShell = 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()
WshShell.Sleep(1000)
ret = WshShell.Run("verz.cmd " & Benutzer, 0, 1)
End Sub
Member: Biber
Biber Aug 29, 2005 at 08:12:26 (UTC)
Goto Top
Moin Rakeem2001,

aber angepasst hast Du das Script an den Stellen OU, DC, DC schon?
also in z.B. diesen Zeilen
ouo = GetObject("LDAP://OU=user,DC=domaene,DC=de")
Da muss statt "domaene" natürlich "René's Firmendomäne") rein.

Nur dass wir wissen, was es für Fehler sein könnten.
Wenn es das nicht ist - wie ist denn die Fehlernummer / der Fehlertext genau?

Frank / der Biber aus Bremen
Member: Rakeem2001
Rakeem2001 Aug 29, 2005 at 13:04:47 (UTC)
Goto Top
Der genau Fehlertext ist:

System.Exception: ActiveX-Komponente kann nicht erstellt werden.
at Microsoft.VisualBasic.Interaction.GetObject(String PathName, String Class)
at WindowsApplication1.Form1.BenuntzerAnlegen(Object Benutzer, Object Vorname, Object Nachname, Object Passwort) in D:\Data\Visual Studio Projects\WindowsApplication1\Form1.vb:line 96
at WindowsApplication1.Form1.Button1_Click(Object sender, EventArgs e) in D:\Data\Visual Studio Projects\WindowsApplication1\Form1.vb:line 89
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Er hat also irgendwelche Probleme mit dem Active X... Ich habe leider selber keine Ahnung wieso das passiert.

Hoffe es kann mir jetzt noch jemand weiterhelfen!
Member: Rakeem2001
Rakeem2001 Sep 02, 2005 at 06:34:54 (UTC)
Goto Top
So, ich bedanke mich nochmals für die Hilfe, habe jetzt aber umdisponiert und habe nun mit dem Tool "ldifde", was standardmässig bei Windows Servern dabei ist (habe ich aber nicht gewußt, genauso wie der FISI... sind eben beide noch Azubis...face-smile und nun habe ich meine 1000 Testuser.

Falls es jemanden interessiert wie das geht, und da dieses Thema recht häufig gelesen wurde, hier mal ne kurze schnelle Erklärung:

Für jeden User braucht man folgenden Block an Daten:

dn: CN=toni1 meier1,OU=ZielOU,DC=Domänenname,DC=de
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: toni1 meier1
sn: meier1
givenName: toni1
distinguishedName: CN=toni1 meier1,OU=ZielOU,DC=Domänenname,DC=de
displayName: toni1 meier1
name: toni1 meier1
userPrincipalName: t1.meier1@Comtest.de
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=Domänenname,DC=de

Anschließend muss man sich nur noch die passende Menge in einer Datei (z.B. user.ldif) zusammenfassen, dabei jeden User per Leerzeile trennen und dann muss diese Datei, der Einfachheit halber, in den Dokumenten und EInstellungen des Administrators ablegen...

Dann noch schnell "ldifde -i -f user.ldif -s Servername" und dann werden die User schnell eingetragen, allerdings muss man sie dann noch im AD aktivieren.

So fertig.

THX René
Member: manni45
manni45 Mar 13, 2007 at 14:59:12 (UTC)
Goto Top
Hi
ich versuche auch dieses Script zum laufen zu bringen.
Bekomme aber am anfang schon diese meldung.
Windows Script Host
Skript: C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\user_anlegen_script\user.vbs
Zeile: 1
Zeichen: 40
Fehler: ')' erwartet
Code: 800A03EE
Quelle: Kompilierungsfehler in Microsoft VBScript

OK
Kenne mich mit VB nicht aus.

Kann jemmand Helfen

Danke
Manni
Member: Captnemo
Captnemo Feb 07, 2012 at 10:23:35 (UTC)
Goto Top
Ich hol dieses Thread noch mal aus der Versenkung, weil ich mich gerade mit dieser Thematik auseinander setzen muß.

Das Script ist klasse und funktioniert wunderbar.

Usereinrichtung klappt, und anlegen im Exchange auch. Ich erstelle die Home- und Profilordner, gebe sie entsprechend frei und vergebe die Rechte. Klappt alles wunderbar.

Was mir noch fehlt ist eingentlich in dem Script nur, wie ich ein Anmeldescript mit im User eintragen kann. Hab so gar keine Idee wie das gehen könnte. Und wenn man das bei Google sucht, bekommt man tausend Seiten wie man VBS im Anmeldescript nutzt. Das interessiert mich aber nicht. Ich will ja das Anmeldescript im AD per VBS setzen.
Kann mir irgendwer eine Tipp geben wie es geht oder wo sowas steht? Bzw. wo finde ich eine Referenz für die in obigen Script angelegten Objecte b / ouo, wo die möglichen eigenschaften aufgelistet sind, die man setzen kann.

Danke für alles
Dieter