HowFlow


HowFlow — Visual Basic Script um mehrer User, die in einem text-File stehen, in die ActiveDirectory hinzufügen.

Share it!   Posted by lied lied 5 months ago

1. Problemstellung:

Es sollen 350 Benutzer im Active Directory angelegt werden. Jeder Benutzer soll einen Ordner auf dem Server zur Verfügung gestellt bekommen auf den nur er und der Administrator Zugriff hat. Dieser Ordner soll bei der Anmeldung am Client automatisch als Netzlaufwerk eingebunden werden. Der Benutzer soll ebenfalls sein persönliches Windows-Profil vom Server beziehen. Da der Administrationsaufwand sehr hoch ist, wenn man jeden Benutzer einzeln im Active Directory anlegt, wird ein Visual Basic Script benutzt. Dieses Script liest aus einem Textfile die benötigten Daten aus.

2. Das Visual Basic 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)
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=OrganisationUnit,DC=DomainName,DC=TopLevelDomain")
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 & "@DomainName.TopLevelDomain" 
b.Put "profilePath", "\\Server\daten\profile\" & Benutzer
b.Put "homeDirectory", "\\Server\daten\home\" & Benutzer
b.Put "homeDrive", "H:" 
b.SetInfo
b.SetPassword Passwort
b.AccountDisabled = False
b.SetInfo
WScript.Sleep(1000)
ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)
End Sub

Erklärung:

Das Script sollte man so wie es oben steht in den Editor kopieren und dann mit der Endung ”*.vbs” speichern. Das Script liest zuerst aus der Datei “User.txt” den Datensatz für einen Benutzer. Die Attribute in der Datei “User.txt” werden per Komma getrennt und die Reihe muss mit KEINEM Zeichen beendet werden. Die Attribute werden Ausgelesen und in den Feldern 0-3 gespeichert: Feld 0 enthält den Benutzernamen und wird der Variablen Benutzer zugewiesen Feld 1 enthält den Vornamen und wird der Variable Vorname zugewiesen Feld 2 enthält den Nachnamen und wird der Variable Nachname zugewiesen Feld 3 enthält das Passwort und wird der Variable Passwort zugewiesen Nachdem ein Datensatz eingelesen wurde, wird die Subroutine “BenutzerAnlegen” mit den Parametern Benutzer, Vorname, Nachname, Passwort aufgerufen und die Datei “User.txt” geschlossen. Die Subroutine erstellt einen neuen Benutzer in einer im Script angegebenen Organisationseinheit der Domäne. Der Benutzer bekommt eine Bezeichnung aus Vor- und Nachnamen.

Das LDAP-Feld des NT-Anmeldenamens [sAMAccountname] wird mit der Variablen Benutzer gefüllt.

Das Feld “givenName” wird mit der Variablen Vorname gefüllt.

Das Feld “sn” wird mit der Variablen Nachname gefüllt. Das Feld “userAccountControl” bekommt den Wert “66082” zugeordnet und bewirkt, dass das Passwort des Accounts nicht abläuft. Wenn man möchte, dass der Benutzer sein Passwort bei der nächsten Anmeldung selber vergeben soll, muss man im Script die Zeile

b.Put “pwdLastSet”, 0

einfügen. Das Feld “userPrincipalName” wird mit der Variablen Benutzer, dem Zeichen ”@” und dem Full Qualified Domin Name (FQDN) belegt. Das Feld “profilePath” gibt den Profilpfad an. Das Feld “HomeDirectory” gibt den Pfad des Stammverzeichnis an. Profipfad und Stammverzeichnis werden zum Teil vorgegeben nur die Variable “Benutzer” dem Pfad als weiterer Ordner zugefügt. Das Feld “homeDrive” gibt den Laufwerksbuchstaben des Stammverzeichnis an, welches automatisch als Netzlaufwerk verbunden wird. Das Passwort wird eingerichtet und der Account wird aktiviert. Jetzt ruft das Script die Datei “Verz.cmd” auf.

3. Die Datei Verz.cmd:


md 
echo J | cacls /C /E /G Administratoren:F
echo J | cacls /C /E /G Domain.TopLevelDomain
echo J | cacls /C /E /R Jeder
md 
echo J | cacls /C /E /G Administratoren:F
echo J | cacls /C /E /G Domain.TopLevelDomain
echo J | cacls /C /E /R Jeder

Erklärung:

Die Datei “Verz.cmd” erstellt einen Ordner mit dem Benutzernamen im vorgegebenen Stammverzeichnis. Die Zugriffsberechtigungen für diesen Ordner werden ebenfalls automatisch gesetzt. Auf diesen Ordner haben der Benutzer und der Administrator Vollzugriff und jeder andere Benutzer hat keine Zugriffsrechte auf die Daten. Dann wird ein Ordner für das Benutzerprofil erstellt, für den gleiches in Bezug auf Namensgebung und Rechtevergabe gilt. Da das Script eine Schleife beinhaltet, wird dieser Vorgang solange wiederholt bis in der Datei “User.txt” kein weiterer Eintrag vorhanden ist.

4. Die Datei “User.txt”


Benutzeranmeldename1,Vorname1,Nachname1,Passwort1
Benutzeranmeldename2,Vorname2,Nachname2,Passwort2
Benutzeranmeldename3,Vorname3,Nachname3,Passwort3
Benutzeranmeldename4,Vorname4,Nachname4,Passwort4
Benutzeranmeldename5,Vorname5,Nachname5,Passwort5
Benutzeranmeldename6,Vorname6,Nachname6,Passwort6
Benutzeranmeldename7,Vorname7,Nachname7,Passwort7
Benutzeranmeldename8,Vorname8,Nachname8,Passwort8
Benutzeranmeldename9,Vorname9,Nachname9,Passwort9
"Und so weiter und so fort bis keiner mehr da ist" :D

Erklärung:

In der Datei “User.txt” sind alle Informationen enthalten, die benötigt werden, um die neuen Benutzerkonten anzulegen. Die Daten innerhalb der Datei müssen nach folgendem Schema angeordnet sein:
 
Benutzerkonto1,Vorname1,Nachname1,Passwort1
Benutzerkonto2,Vorname2,Nachname2,Passwort2
Die Reihen werden NICHT mit einem Zeichen abgeschlossen.

5. Besonderheiten bei Windows 98 Clients:

Dieses Anmeldescript funktioniert problemlos bei Windows 2000 oder Windows XP Prof. Clients. Sobald man jedoch versucht einen Windows 98-Client zu benutzen, bekommt man ein paar Schwierigkeiten, da Windows 98 kein richtiges Netzwerkbetriebssystem ist. Windows 98 ist nicht in der Lage die Homeverzeichnisse zu verbinden, wenn im Verzeichnispfad eine Variable angegeben ist. Um dieses Problem zu lösen, muss man sich ein Anmeldescript schreiben, welches das Betriebssystem prüft und im Fall von Windows 98 das Programm “putinenv.exe” (im Internet frei erhältlich) in das Betriebssystem einbindet. Dieses Programm erlaubt Windows 98 das Interpretieren der Variablen in der Pfadangabe.

6. Implementation ins Netzwerk:

Es müssen lediglich ein paar Anpassungen gemacht werden, um das Script in Ihrem System zu verwenden.
Variablen im Visual Basic Script:

OrganisationUnit:

bezeichnet die Organisationseinheit in der der neue Benutzer angelegt wird. 

DomainName:

bezeichnet den Namen ihrer Domäne 

TopLevelDomain:

bezeichnet den Namen ihrer Top Level Domäne 

\\Server\daten\profile\:

bezeichnet den Pfad des Benutzerprofils.

\\Server\daten\home\:

bezeichnet den Pfad des die Stammverzeichnis des Benutzers.

Variablen in der Datei "Verz.cmd" 

\\Server\daten\home\:

bezeichnet den Pfad in dem das Stammverzeichnis des Benutzers angelegt wird.

\\Server\daten\profile\:

bezeichnet den Pfad in dem das Profil des Benutzers angelegt wird.


Please log in or sign up and vote for this trick if it was helpful for you.
Don't forget to subscribe to our RSS Feed RSS/Atom feed to get the latest tricks.