Jump to content

VBS-Script für User anlegen


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

Empfohlene Beiträge

Hallo,

 

hab ein großes Problem muss jede menge User anlegen und würde mir die arbeit gerne etwas erleichtern indem ich ein Script benutze das mir die Userdaten aus einer Textdatei holt benutze.

 

Ich hab folgendes Problem ich kann kein VBS daher ist es für mich schwierig bestehende VBS Scripte zu bearbeiten und an meien Bedürfnisse anzupassen.

Ich hoffe es ist jemand so net und würde mir das unten genannte script so anpassen das es:

User anlegt mit dem Namen + Anmeldename(gleich wie name),

Das Passwort aus der Txt nimmt,

Das Passwort nie abläuft,

Das Passwort nicht änderbar ist,

Homeverzeichnisse und Scripts brauche ich nicht,

Domäne ist "schulgao.de",

Die User dürfen sich nur an einem PC anmelden welcher auch in TXT steht

 

so jetzt das 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)

Nachname = Feld(1)

Passwort = Feld(2)

Computer = Feld(3)

Call BenuntzerAnlegen(Benutzer,Nachname,Passwort,Computer)

Loop

f.Close

Wscript.Quit(0)

 

Sub BenuntzerAnlegen (Benutzer,Nachname,Passwort,Computer)

Dim ouo, b

Const ADS_UF_PASSWD_CANT_CHANGE = &H0040

Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Set ouo = GetObject("LDAP://OU=users,DC=SCHULGAO,DC=de")

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

Dim WshShell, ret

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

b.Put "sAMAccountName", Benutzer

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

b.SetInfo

b.SetPassword Passwort

b.AccountDisabled = False

objPasswordNoChangeFlag = ADS_UF_PASSWD_CANT_CHANGE

b.Put "userFlags", objPasswordNoChangeFlag

objPasswordDontExpireFlag = ADS_UF_DONT_EXPIRE_PASSWD

b.Put "userFlags", objPasswordDontExpireFlag

b.SetInfo

WScript.Sleep(1000)

End Sub

 

 

 

Vielen Vielen Dank schonmal im vorraus

 

Gruß Stefan

Link zu diesem Kommentar

Also der Aufbau der TExtdatei ist eigentlich einfach:

Benutzer1,Nachname1,Passwort1,Computer1

Benutzer2,Nachname2,Passwort2,Computer2

Benutzer3,Nachname3,Passwort3,Computer3

 

 

DAs Tool ist gut aber er kommt mit meiner exeltabele einfach nicht klar hab die aus dem Beispiel von dem Programm geändert aber das Progi sagt das es nicht geht

Link zu diesem Kommentar

Also hier ist das Skript. Du musst es nur noch an deine Domänen- und OU-Struktur anpassen. Nicht den UPN-Suffix vergessen. Wofür ist eigentlich der Nachname gut, wenn du ihn eh nicht verwendest?

 

Übrigens lässt sich "User can't" change password" nicht einfach im User Account Control als Flag setzen, wie das bei "password never expires" geht. Dieses Flag wird vom System auf Grund der Berechtigungen gesetzt.

Die Lösung ist hier ein Verweigern für SELF und everyone. Es ist sehr wahrscheinlich, dass du bei einer deutschen W2k3 die Gruppennamen anpassen musst.

 

Off-Topic:

Beim skripten merkt man erst wie viel Arbeit die GUI unter der Haube erledigt. Ein simples Umbenennen eines Users ist in Wirklichkeit ein Move auf den neuen Namen.

 

Das Skript:

Dim fso, f, Zeile, Feld
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile ("c:\test.txt",1,0)

Do while not f.AtEndOfLine
Zeile = f.readLine
Feld = split(Zeile,",")
Benutzer = Feld(0)
Nachname = Feld(1)
Passwort = Feld(2)
Computer = Feld(3)
Call BenutzerAnlegen(Benutzer,Nachname,Passwort,Computer)
Loop
f.Close
Wscript.Quit(0)

Sub BenutzerAnlegen (Benutzer,Nachname,Passwort,Computer)
Dim ouo, b, uac

Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000
Set ouo = GetObject("LDAP://OU=test,DC=test,DC=de")
Set b = ouo.Create("user", "CN="  & Benutzer)

b.Put "sAMAccountName", Benutzer
b.Put "userPrincipalName", Benutzer & "@test.de"
b.SetInfo
b.SetPassword Passwort
b.AccountDisabled = False
b.Put "userWorkstations", Computer
uac = b.Get("userAccountControl")
uac = uac Or ADS_UF_DONT_EXPIRE_PASSWD
b.put "userAccountControl", uac
b.SetInfo

Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100

Dim sd, dacl,arrTrustees,ACE
Set sd = b.Get("ntSecurityDescriptor")
Set dacl = sd.DiscretionaryAcl
arrTrustees = array("nt authority\self", "EVERYONE")


For Each strTrustee in arrTrustees
   Set ACE = CreateObject("AccessControlEntry")
   ACE.Trustee = strTrustee
   ACE.AceFlags = 0
   ACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
   ACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
   ACE.ObjectType = CHANGE_PASSWORD_GUID
   ACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
   dacl.AddAce ACE
Next


sd.DiscretionaryAcl = dacl
b.Put "nTSecurityDescriptor", sd
b.SetInfo
End Sub

Link zu diesem Kommentar

DAs Tool ist gut aber er kommt mit meiner exeltabele einfach nicht klar hab die aus dem Beispiel von dem Programm geändert aber das Progi sagt das es nicht geht

 

Du musst darauf achten, das jede ausgefüllte Spalte innerhalb der ersten 10 Zeilen einen alphanumerischen Wert hat, damit der MS Jet 4.0 Treiber die Spalten als Text übergibt.

Alterbativ kannst du '1234 schreiben (Das Feld bekommt dann eine "grüne Hinweisecke". Der Wert 1234 wird dann ohne das Apostroph als Text übergeben.)

Hier findest du vermutlich weitere Antworten zu Problemen mit der Excel Vorlage.

 

Die neue Version ist übrigens in Arbeit und wird neben deutschem und englischem ADS schrittweise um alle Userattribute erweitert, die das AD bietet.

 

Hier eine Liste im MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/mapping_between_iadsuser_properties_and_active_directory_attributes.asp)

 

Übrigens werden die Scripte nach dem Update nicht nur zum anlegen von Benutzern dienen, sondern auch zum ändern der Attribute von bestehenden Benutzern.

Wenn ein User aus dem Script nicht im AD exisitert wird dieser angelegt, andernfalls werden die Properties nach den Scriptvorgaben angepasst.

 

 

Schöne Grüße

Jens

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...