Windows Domainbenutzer via Script - also per Batch - anlegen
25.03.2011
23:02:37 Uhr6167 Aufrufe
5 Antworten
23:02:37 Uhr
5 Antworten
Hilfreich +4
"Eigentlich" ein alter Hut und auch hier schon x mal durchgekaut - aber leider öfters unter falscher Flagge oder der jeweilige Titel ist nicht wirklich Suchmaschinenkonform.
Dahe auch die Doppeldeutige Benennung Script & Batch - wobei ich ja mit einer Steuerbatch ein VBS Script starte, dass innerhalb wiederrum cmd Befehle startet.
Dahe auch die Doppeldeutige Benennung Script & Batch - wobei ich ja mit einer Steuerbatch ein VBS Script starte, dass innerhalb wiederrum cmd Befehle startet.
Vorab:
Die Steuerbatch - wie (bei mir) immer geht die Batch davon aus, dass Sie im Ordner c:\script\schnippselname liegt.
Da diese Schnippsel etwas mit der AD zu tun haben, also von C:\script\ad\
Diese Pfade entweder übernehmen oder anpassen
Bei uns ist die Personalnummer "der" eindeutige Schlüssel deswegen und weil die relativ kurz ist - wird diese als allererste abgefragt und die eingegbenen Daten im Scriptordner als output-personalnummer.txt abgelegt.
Wer das braucht, kann es übernehmen, wer nicht ändern oder so ist das ganze ja auch gedacht als Anleitung, was man mit ein paar zeilen stricken kann.
Denn Hand aufs Herz, gerade bei solch Lapalien, wie User anlegen klingelt immer wieder gerne mal das Telefon, oder der Kaffe ist alle und man weiß nicht mehr, wo man (beim anlegen des Users) stehen geblieben ist.
Ganz ohne @echo off - jeder, der das Teil übernehmen will, darf das natürlich so anpassen, wie er lustig ist - der interessante Teil ist jedoch eh im VBS "versteckt"
Ich hoffe, die folgenden Zeilen sind für einen ausgewachsenen Admin selbsterklärend für euch schreib ich das ja nieder.
Die Steuerbatch:
Das vbs geht davon aus, dass die User nach:
Logischweise ist dieses hier präsentierte Script nur ein minimaler Teil dessen, was wirklich bei mir läuft, und hat - obwohl es ein oller seit einem Jahrzehnt funktionierender Hut ist - so im status ungetestet - denn beim AD User anlegen gilt noch viel mehr, als bei anderen Scripten - ein falsches Zeichen tausend mal nix passiert auf einmal schnöde im Rohr krepiert.
Mit anderen worten, da ist keine Zeile speziell die Wscript sleep Zeile zuviel drin, eher zuwenig - da minimalisiert.
Durch die obige Liste sollte das aber jeder halbwegs logischdenkende mit [Strg] [H] [Strg][V] neuer Wert selber so gradebiegen können.
Formatierung, Überschriften und Kapitel mach ich später.
Bildschirmausdrucke jedoch von mir niemals.
Gruß
edit:
Gruß und dank für deine wie immer wachsamen Augen
/edit
Die Steuerbatch - wie (bei mir) immer geht die Batch davon aus, dass Sie im Ordner c:\script\schnippselname liegt.
Da diese Schnippsel etwas mit der AD zu tun haben, also von C:\script\ad\
Diese Pfade entweder übernehmen oder anpassen
Bei uns ist die Personalnummer "der" eindeutige Schlüssel deswegen und weil die relativ kurz ist - wird diese als allererste abgefragt und die eingegbenen Daten im Scriptordner als output-personalnummer.txt abgelegt.
Wer das braucht, kann es übernehmen, wer nicht ändern oder so ist das ganze ja auch gedacht als Anleitung, was man mit ein paar zeilen stricken kann.
Denn Hand aufs Herz, gerade bei solch Lapalien, wie User anlegen klingelt immer wieder gerne mal das Telefon, oder der Kaffe ist alle und man weiß nicht mehr, wo man (beim anlegen des Users) stehen geblieben ist.
Ganz ohne @echo off - jeder, der das Teil übernehmen will, darf das natürlich so anpassen, wie er lustig ist - der interessante Teil ist jedoch eh im VBS "versteckt"
Ich hoffe, die folgenden Zeilen sind für einen ausgewachsenen Admin selbsterklärend für euch schreib ich das ja nieder.
Die Steuerbatch:
01.
:start 02.
@Title "Benutzer in %Userdomain% anlegen" 03.
@color f1 04.
@Set /p Perso="Perso :" 05.
@Title "Benutzer in Sfv.local anlegen - Personalnummer: %perso%" 06.
07.
if exist C:\script\ad\output-%perso%.txt @echo "Achtung diese Personalnummer ist schon vergeben" && color fc && type C:\script\ad\output-%perso%.txt && pause 08.
@Set /p yn="yn :" 09.
10.
@cscript "C:\script\ad\Domainuser_anlegen.vbs" //NoLogo>C:\script\ad\output-%perso%.txtDas vbs geht davon aus, dass die User nach:
- vorname.nachname benamst werden
- vorname.nachname@domain.suffix daher auch die SMTP Adresse ist
- jeder auf sein gemapptes Homedir als H:\ auf \\homeserver\user\%username% bekommt
- jeder auf sein Profil auf \\profilserver\profil\%username% bekommt
- es sich nur um einen Standort handelt
- daher jeder bis auf seine eigene Durchwahl die Telefonnummer 1234567 hat
- alle das gleich loginscript im Netlogon haben, dass "login.cmd" heisst
- der Benutzer in der OU "User" angelegt wird
- dieser oben benannte Primärschlüssel in die Beschreibung geschrieben wird
- die Postleitzahl 67890 lautet#
- Die Firma im Ernst Eiswuerfelweg 69 beheimatet ist
- Selbstverfreilich die Webseite des Benutzers unter http://www.administrator.de zu erreichen ist
- der Benutzer in die Domain Globe Gruppe globale_mastergruppe gehoben wird.
- der User durch den trick diesen zuerst deaktiviert anzulegen und Ihn erst später "sleep 5000" zu aktivieren - dieser trotz nicht ausgehebelter Domainpasswordpolicy kein std. Passwort hat und sich bei der ersten Anmeldung dieses (der Domainpasswordpolicy entsprechend akzeptierte) Password selber aussucht.
Logischweise ist dieses hier präsentierte Script nur ein minimaler Teil dessen, was wirklich bei mir läuft, und hat - obwohl es ein oller seit einem Jahrzehnt funktionierender Hut ist - so im status ungetestet - denn beim AD User anlegen gilt noch viel mehr, als bei anderen Scripten - ein falsches Zeichen tausend mal nix passiert auf einmal schnöde im Rohr krepiert.
Mit anderen worten, da ist keine Zeile speziell die Wscript sleep Zeile zuviel drin, eher zuwenig - da minimalisiert.
Durch die obige Liste sollte das aber jeder halbwegs logischdenkende mit [Strg] [H] [Strg][V] neuer Wert selber so gradebiegen können.
01.
dim rootDSE 02.
set rootDSE = GetObject("LDAP://RootDSE") 03.
domainname=rootDSE.Get("defaultnamingcontext") 04.
05.
set domain = GetObject("LDAP://" & domainname) 06.
07.
' Popup Benutzername 08.
Vname = InputBox("Vorname?") 09.
NName = InputBox("Nachname?") 10.
11.
'check if samid is to long 12.
Name = Vname & "." & NName 13.
Anzahlzeichen=Len(Name) 14.
if Anzahlzeichen > 20 Then 15.
shortname = Left (Name,20) 16.
msgbox "Der Anmeldename " & Name & " ist länger als die erlaubten als 20 Zeichen!" 17.
msgbox "Der Anmeldename " & Name & " wird auf" & shortname & " gekürzt" 18.
End If 19.
20.
if shortname = "" then 21.
shortname = Name 22.
End If 23.
24.
logon = Name & "@domain.local" 25.
mail = Name & "@domain.suffix" 26.
home ="\\homeserver\user\" & Name 27.
28.
' Popup Telefonnummerndurchwahl: 1234567 29.
intTel = InputBox("Telefondurchwahl?-1234567") 30.
31.
Telefon = "+49 1234567 " & intTel 32.
33.
' Popup Personalnummer 34.
Perso = InputBox("Personalnummer") 35.
36.
' Ausgabe in Text 37.
WScript.Echo "Name" &"," & "Telefon" &"," & "Personalnummer" 38.
WScript.Echo Name & "," & intTel & "," & Perso 39.
40.
41.
' Ordner anlegen 42.
Set WshShell = WScript.CreateObject("WScript.Shell") 43.
Return = WshShell.Run("Cmd /c md \\profilserver\profil\" & Name) 44.
Return = WshShell.Run("Cmd /c md \\homeserver\user\" & Name) 45.
Set WshShell = Nothing 46.
47.
' User anlegen 48.
Set usr = domain.Create("user", "CN=" & Name & ",OU=User") 49.
usr.Put "samAccountName", shortname 50.
usr.Put "givenName", Vname 51.
usr.Put "sn", Nname 52.
usr.Put "DisplayName", Name 53.
usr.Put "homeDirectory", home 54.
usr.Put "homeDrive", "h:" 55.
usr.Put "profilePath","\\profilserver\profil\" & Name & "\" 56.
usr.Put "scriptPath", "login.cmd" 57.
usr.Put "telephoneNumber", Telefon 58.
usr.Put "HomePhone", Telefon 59.
usr.Put "employeeID", Perso 60.
usr.Put "postalCode", "67890" 61.
usr.Put "StreetAddress" , "Ernst Eiswuerfelweg 69" 62.
usr.Put "userPrincipalName", logon 63.
usr.Put "mail", mail 64.
usr.Put "wWWHomePage", "http://www.administrator.de" 65.
66.
usr.SetInfo 67.
WScript.Sleep 5000 68.
69.
Set WshShell = WScript.CreateObject("WScript.Shell") 70.
Return = WshShell.Run("%COMSPEC% /c Echo j| cacls \\profilserver\profil\" & Name & " /t /c /g domain.local\" & Name & ":F") 71.
Return = WshShell.Run("%COMSPEC% /c Echo j| cacls \\homeserver\user\" & Name & " /t /c /g domain.local" & Name & ":F") 72.
73.
Return = WshShell.Run("%COMSPEC% /c net user " & Name & " /domain /active") 74.
Return = WshShell.Run("%COMSPEC% /c net group " & " " & """globale_mastergruppe""" & " " & Name & " /domain /add") 75.
Set WshShell = Nothing Formatierung, Überschriften und Kapitel mach ich später.
Bildschirmausdrucke jedoch von mir niemals.
Gruß
edit:
- Danke Bastla - eher nein, die hat der Anton Nym unterschlagen

Noch stilistische Anmerkungen:
- Ich weiß - da hat der Anton Nym und der Scriptverkürzer in mir seine Spuren hinterlassen - zwischen den einzelnen Befehlsreihen laufen bei mir noch ein paar andere, die aber nur bei mir so benutzt werden und lauffähig sind (da werden u.a Citrix Logins CTI Anbindung und noch viel "schlimmeres" durchgezogen - das vbs Script - das eigentlich auch auch die Steuerbatch laufen würde - hat fast den doppelten Umfang, wie der Stand, den ich hier veröffentlicht habe)
Gruß und dank für deine wie immer wachsamen Augen
/edit
bastla schreibt am 26.03.2011 um 11:11:16 Uhr
Hallo T-Mo!
Die Zeilen 59 und 60 funktionieren wirklich ohne "g " vor dem User?
Noch stilistische Anmerkungen:
Zeile 1 (des VBS-Scripts) würde ich (da sie ja ohnehin nicht "Option Explicit" lautet) ersatzlos streichen, und auch hinsichtlich der letzten Zeile hätte ich einen "Alles oder Nichts"-Standpunkt: wenn schon Objekte "zerstören", dann aber nicht nur einzelne (womit Du auch die Zeilen 33 und 58 einsparen könntest) ...
Grüße
bastla
Die Zeilen 59 und 60 funktionieren wirklich ohne "g " vor dem User?
Noch stilistische Anmerkungen:
Zeile 1 (des VBS-Scripts) würde ich (da sie ja ohnehin nicht "Option Explicit" lautet) ersatzlos streichen, und auch hinsichtlich der letzten Zeile hätte ich einen "Alles oder Nichts"-Standpunkt: wenn schon Objekte "zerstören", dann aber nicht nur einzelne (womit Du auch die Zeilen 33 und 58 einsparen könntest) ...
Grüße
bastla
Snowman25 schreibt am 10.06.2011 um 15:24:56 Uhr
Zitat von Icedg:
Moin, thx für die Anleitung. Wo siehst du das Problem zu "dsadd user" bzw. ich kann jetzt gerade nicht den Vorteil
deines Scripts erkennen.
Moin, thx für die Anleitung. Wo siehst du das Problem zu "dsadd user" bzw. ich kann jetzt gerade nicht den Vorteil
deines Scripts erkennen.
U:\>dsadd /? Der Befehl "dsadd" ist entweder falsch geschrieben oder konnte nicht gefunden werden.Im Gegensatz dazu kann das Skript von jedem Rechner aus ausgeführt werden.
Gruß
Snow
TimoBeil schreibt am 05.04.2012 um 17:09:17 Uhr
Salve,
Die Policy in die Tonne zu treten - bringt ja nix
Da muß man also Trixxsen und ich trixxse - wenn dann gerne mit graden Wegen.
Das die vbs cmds startet ist ja schon unhybsch genug, aber sowohl set /p, als auch Net user und dsadd - nee nicht mein Steil

retour
Zitat von Snowman25:
> Zitat von Icedg:
> ----
> Moin, thx für die Anleitung. Wo siehst du das Problem zu "dsadd user" bzw. ich kann jetzt gerade nicht den Vorteil
> deines Scripts erkennen.
> Zitat von Icedg:
> ----
> Moin, thx für die Anleitung. Wo siehst du das Problem zu "dsadd user" bzw. ich kann jetzt gerade nicht den Vorteil
> deines Scripts erkennen.
- Das ist doch nur ein Weg/Beispiel, wie man es machen "kann"

Die Policy in die Tonne zu treten - bringt ja nix
Da muß man also Trixxsen und ich trixxse - wenn dann gerne mit graden Wegen.
Das die vbs cmds startet ist ja schon unhybsch genug, aber sowohl set /p, als auch Net user und dsadd - nee nicht mein Steil
U:\>dsadd /? Der Befehl "dsadd" ist entweder falsch geschrieben oder konnte nicht gefunden werden.dsadd ist nur auf dem DC verfügbar.
Noop - das ist z.B für XP/2003 im Adminpak dabei Gruß
Snow
Snow
retour
TimoBeil schreibt am 25.04.2012 um 13:34:14 Uhr
Moin,
wie schrub ich doch da oben?
Tja - heute hatte ich bei Maximiliane Musterfrauelein einen Rohrcrétin...
Immer frei nach dem Motto 20 Zentimeterichen sind ganz schön lang..
Daher gibt es jetzt die neuen / zusätzlichen Zeilen 11-22 und Zeile 49 wurde angepasst.
Von daher ist Bastalas (immer noch) berechtiger (und von mir berichtigter) Einwurf wegen
wie schrub ich doch da oben?
Zitat von TimoBeil:
denn beim AD User anlegen gilt noch viel mehr, als bei anderen Scripten - ein falsches Zeichen tausend mal nix passiert auf einmal schnöde im Rohr krepiert.
denn beim AD User anlegen gilt noch viel mehr, als bei anderen Scripten - ein falsches Zeichen tausend mal nix passiert auf einmal schnöde im Rohr krepiert.
Tja - heute hatte ich bei Maximiliane Musterfrauelein einen Rohrcrétin...
Immer frei nach dem Motto 20 Ze
Daher gibt es jetzt die neuen / zusätzlichen Zeilen 11-22 und Zeile 49 wurde angepasst.
Von daher ist Bastalas (immer noch) berechtiger (und von mir berichtigter) Einwurf wegen
Die Zeilen 59 und 60 funktionieren wirklich ohne "g " vor dem User?
so nicht mehr nachvollziehbar, denn die beziehen sich auf die jetzigen Zeile 70 ff..







