Bitnaper 10 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 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 Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 Hi, es wäre sehr hilfreich, wenn wir etwas über den Aufbau des Textfile erfahren könnten... Zitieren Link zu diesem Kommentar
WSUSPraxis 48 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 Ich mache dies mit der Software AdsScripter die du hier finden kannst InnovaSoft AdsScripter Zitieren Link zu diesem Kommentar
Bitnaper 10 Geschrieben 17. November 2006 Autor Melden Teilen Geschrieben 17. November 2006 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 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 das kannst du auch in zwei oder drei Zeilen in einer *.bat machen, etwa so for /F "delims=," %%a in (users.txt) do echo dsadd user -samid %%a -ln %%b -p %%c dsadd user -samid %%a -ln %%b -p %%c) schau dir die Syntax von "dsadd user" an und welche Parameter du brauchst. Samid, lastname und pwd sind ein bischen wenig. cu blub Zitieren Link zu diesem Kommentar
Bitnaper 10 Geschrieben 17. November 2006 Autor Melden Teilen Geschrieben 17. November 2006 kann ich da auch festlegen an welchem PC sich der user nur anmelden darf? habe nix dazu nachlesen können Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 der AnmeldePC ist bei dsadd tatsächlich nicht dabei. Wenn die User aber erstmal angelegt sind, kannst du diese bequem mit admodify verändern Introduction to ADModify.net sonst musst halt doch scripten cu blub Zitieren Link zu diesem Kommentar
Bitnaper 10 Geschrieben 17. November 2006 Autor Melden Teilen Geschrieben 17. November 2006 was mir da auch fehlt ist das mit dem Benutzer kan Kennwort nicht ändern und Kennwort läuft nicht ab. Gibt es niemand der das schnell in VBS schreiben könnte? Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 Hallo, ich kann das Skript ein bisschen anpassen. Hast du wirklich eine OU, die users heißt? Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 17. November 2006 Melden Teilen Geschrieben 17. November 2006 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 Zitieren Link zu diesem Kommentar
jensw_2000 10 Geschrieben 20. November 2006 Melden Teilen Geschrieben 20. November 2006 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 Zitieren Link zu diesem Kommentar
Bitnaper 10 Geschrieben 27. November 2006 Autor Melden Teilen Geschrieben 27. November 2006 He super, das script funzt musste aber noch ein par Kleinichkeiten ändern und zwar bei einem deutschen system muss es auch in deutsch da steht "NT-Autorität\selbst" und "NT-Autorität\JEDER" sonst bringt er nen fehler. Vielen Dank erstmal habt mir sehr geholfen. Gruß Stefan Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 27. November 2006 Melden Teilen Geschrieben 27. November 2006 ... und zwar bei einem deutschen system muss es auch in deutsch da steht "NT-Autorität\selbst" und "NT-Autorität\JEDER" sonst bringt er nen fehler.Vielen Dank erstmal habt mir sehr geholfen. Gruß Stefan Klar, sag ich ja. Alternativ kannst du auf die WellKnown SIDs gehen. Gruß woiza Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.