Nutzerkonten auf Basis einer Vorlage in Windowsdomänen anlegen
13.05.2009
11:42:35 Uhr5603 Aufrufe
11:42:35 Uhr
Hilfreich +5
Hallo allerseits!
Ich möchte heute ein Batchscript veröffentlichen bei dessen Erstellung mir dieses Forum eine grosse Hilfe war.
Das Skript heisst "New_User_from_Template.bat".
Es dient dazu auf der Kommandozeile in einer Windowsdomäne ein Nutzerkonto zu erstellen welches auf der Vorlage eines bereits bestehenden Nutzer beruht.
Nun werdet Ihr vielleicht sagen: Wofür das?
Man kann mit den normalen Windows-Admin-Tools eine Kopie des Nutzers erstellen und fertig.
Und ich sage: Richtig, aber....
Ich habe mich jetzt nicht auf die Suche nach anderen Tools gemacht die mehr können, aber bei den normalen Tools wird nicht alles kopiert.
So fehlen zum Beispiel die Werte für die Felder "Beschreibung" oder "E-Mail". Ausserdem ist der Pfad zum H-Laufwerk nicht korrekt.
Zuletzt hat mich die massenhafte Klickerei in den massenhaften Eigenschaftsfeldern genervt. Besonders wenn es darum geht mehrere neue Nutzerkonten zu erstellen.
Kurz: Kann sein das es bessere Lösungen gibt, aber das ist meine. Vielleicht kann es jemand gebrauchen.
Nun zum Skript.
Zuerst was macht es:
- Es erstellt ein Nutzerkonto auf der Vorlage eines bereits bestehenden Nutzerkontos.
- Es erstellt, füllt und öffnet ein Worddokument welches als Antragsformular dient und vom neuen Nutzer und seinem Vorgesetzten unterschrieben werden muss.
- Es erstellt das Home-Verzeichnis des neuen Nutzers.
- Es setzt die Berechtigungen für das Home-Verzeichnis des neuen Nutzers.
- Es erstellt die Freigabe für das Home-Verzeichnis des neuen Nutzers.
- Es setzt die Berechtigungen für die Freigabe für das Home-Verzeichnis des neuen Nutzers.
- Es erstellt das Profilverzeichnis für den neuen Nutzer.
- Es setzt die Berechtigungen für das Profilverzeichnis für den neuen Nutzer.
- Es erstellt eine Log-Datei.
Ausserdem:
- Es hat Platz um noch andere Dinge zu tun.
In meinem Fall habe ich noch Befehle eingebaut um in SQL-Datenbanken ein Konto zu erstellen und Berechtigungen zu vergeben.
Das erleichtert uns die Arbeit. Ich habe es aber im Skript weggelassen, da das sehr auf uns zugeschnitten ist.
Im wesentlichen dreht sich dabei aber alles um das Programm "sqlcmd.exe".
Wie macht es das:
Hauptsächlich nutze ich die "ds-Befehle" aus dem Adminpack von Windows.
Also "dsadd.exe", "dsquery.exe" und "dsget.exe".
Ausserdem noch "rmtshare.exe" um Berechtigungen auf Freigaben zu setzen, sowie das oben genannte "sqlcmd.exe" für SQL-Datenbanken und "sleep.exe"
Plus die Dateien "dsquery.dll" und "sqlcmd.rll". Damit kann das "Paket" überall laufen, ohne zusätzliche Installationen.
Bedingungen:
- Natürlich Domänen-Adminrechte.
Folgende Ordnerstruktur (bei mir):
- root-Ordner (Name beliebig, nur für die Batchdatei)
darunter die Pflichtordner:
- FormFiles (für das originale Worddokument/Antragsformular)
- LogFiles (für die Log-Dateien)
- Programs (für die unter "Wie macht es das" genannten Dateien)
- TempFiles (für temporär erstellte Text-Dateien)
Wie soll ich es lesen:
- Alle Variablen habe ich in Grossbuchstaben geschrieben.
- Überall wo BEISPIEL steht müsst Ihr Eure eigenen Werte vorgeben.
ACHTUNG:
Eventuell zeigt der Browser manche Zeilen mit sehr langem Code nicht vollständig an. Dazu der Tipp von "Biber":
Die angezeigte Seite sieht aus, als wären die rechten 5 cm abgeschnitten und ein Scrollen nach rechts ist nicht möglich.
Wenn es dieses Verhalten auftritt, dann ist ein funktionierender Workaround, der auch hier im Forum gepostet wurde:
Im Browser auf "Ansicht"->"Schriftgrad" gehen und dort das, was ohnehin eingestellt ist (meistens "Mittel") einfach bestätigen.
Sonstiges:
Der folgende Code ist an den entscheidenen Stellen "entschärft".
Ihr könnt ihn eins zu eins kopieren und nutzen, aber es wird kein Konto und keine Verzeichnisse erstellt und keine Berechtigungen vergeben.
Wenn Ihr die richtige Umgebung habt und eure eigenen Werte richtig sind, wird es bei den entscheidenen Punkten lauter Echos auswerfen.
Unterhalb dieser Echos stehen im Code, auskommentiert, die "scharfen Befehle".
Ihr findet die Befehle in den Bereichen:
--- Erstellen des Home- und Profilverzeichnisses sowie der Freigabe inklusive Freigabeberechtigungen ---
--- Erstellen des neuen Nutzers ---
--- Vergeben der Rechte fuer das Profilverzeichnis ---
--- Vergeben der Rechte fuer das Homeverzeichnis ---
In den beiden letzten Bereichen müsst Ihr, um es zum Laufen zu bringen, die ganzen REM's rausnehmen.
Das Antragsformular als Worddokument fehlt hier noch.
Dahinter steckt eine Datei mit einem Makro welche im Skript aufgerufen wird.
Das Makro füllt die Formularfelder über eine Textdatei welche vom Skript erstellt wird.
Sollte daran Bedarf bestehen bitte per PM melden.
Sollte viel Bedarf bestehen kann ich den Makrocode hier noch einstellen.
Es ist leider recht komplex geworden, aber ich hoffe trotzdem das ich mich verständlich machen konnte und es jemand behilflich ist.
Vielen Dank für die Aufmerksamkeit.
Gruss,
Destry
Ich möchte heute ein Batchscript veröffentlichen bei dessen Erstellung mir dieses Forum eine grosse Hilfe war.
Das Skript heisst "New_User_from_Template.bat".
Es dient dazu auf der Kommandozeile in einer Windowsdomäne ein Nutzerkonto zu erstellen welches auf der Vorlage eines bereits bestehenden Nutzer beruht.
Nun werdet Ihr vielleicht sagen: Wofür das?
Man kann mit den normalen Windows-Admin-Tools eine Kopie des Nutzers erstellen und fertig.
Und ich sage: Richtig, aber....
Ich habe mich jetzt nicht auf die Suche nach anderen Tools gemacht die mehr können, aber bei den normalen Tools wird nicht alles kopiert.
So fehlen zum Beispiel die Werte für die Felder "Beschreibung" oder "E-Mail". Ausserdem ist der Pfad zum H-Laufwerk nicht korrekt.
Zuletzt hat mich die massenhafte Klickerei in den massenhaften Eigenschaftsfeldern genervt. Besonders wenn es darum geht mehrere neue Nutzerkonten zu erstellen.
Kurz: Kann sein das es bessere Lösungen gibt, aber das ist meine. Vielleicht kann es jemand gebrauchen.
Nun zum Skript.
Zuerst was macht es:
- Es erstellt ein Nutzerkonto auf der Vorlage eines bereits bestehenden Nutzerkontos.
- Es erstellt, füllt und öffnet ein Worddokument welches als Antragsformular dient und vom neuen Nutzer und seinem Vorgesetzten unterschrieben werden muss.
- Es erstellt das Home-Verzeichnis des neuen Nutzers.
- Es setzt die Berechtigungen für das Home-Verzeichnis des neuen Nutzers.
- Es erstellt die Freigabe für das Home-Verzeichnis des neuen Nutzers.
- Es setzt die Berechtigungen für die Freigabe für das Home-Verzeichnis des neuen Nutzers.
- Es erstellt das Profilverzeichnis für den neuen Nutzer.
- Es setzt die Berechtigungen für das Profilverzeichnis für den neuen Nutzer.
- Es erstellt eine Log-Datei.
Ausserdem:
- Es hat Platz um noch andere Dinge zu tun.
In meinem Fall habe ich noch Befehle eingebaut um in SQL-Datenbanken ein Konto zu erstellen und Berechtigungen zu vergeben.
Das erleichtert uns die Arbeit. Ich habe es aber im Skript weggelassen, da das sehr auf uns zugeschnitten ist.
Im wesentlichen dreht sich dabei aber alles um das Programm "sqlcmd.exe".
Wie macht es das:
Hauptsächlich nutze ich die "ds-Befehle" aus dem Adminpack von Windows.
Also "dsadd.exe", "dsquery.exe" und "dsget.exe".
Ausserdem noch "rmtshare.exe" um Berechtigungen auf Freigaben zu setzen, sowie das oben genannte "sqlcmd.exe" für SQL-Datenbanken und "sleep.exe"
Plus die Dateien "dsquery.dll" und "sqlcmd.rll". Damit kann das "Paket" überall laufen, ohne zusätzliche Installationen.
Bedingungen:
- Natürlich Domänen-Adminrechte.
Folgende Ordnerstruktur (bei mir):
- root-Ordner (Name beliebig, nur für die Batchdatei)
darunter die Pflichtordner:
- FormFiles (für das originale Worddokument/Antragsformular)
- LogFiles (für die Log-Dateien)
- Programs (für die unter "Wie macht es das" genannten Dateien)
- TempFiles (für temporär erstellte Text-Dateien)
Wie soll ich es lesen:
- Alle Variablen habe ich in Grossbuchstaben geschrieben.
- Überall wo BEISPIEL steht müsst Ihr Eure eigenen Werte vorgeben.
ACHTUNG:
Eventuell zeigt der Browser manche Zeilen mit sehr langem Code nicht vollständig an. Dazu der Tipp von "Biber":
Die angezeigte Seite sieht aus, als wären die rechten 5 cm abgeschnitten und ein Scrollen nach rechts ist nicht möglich.
Wenn es dieses Verhalten auftritt, dann ist ein funktionierender Workaround, der auch hier im Forum gepostet wurde:
Im Browser auf "Ansicht"->"Schriftgrad" gehen und dort das, was ohnehin eingestellt ist (meistens "Mittel") einfach bestätigen.
Sonstiges:
Der folgende Code ist an den entscheidenen Stellen "entschärft".
Ihr könnt ihn eins zu eins kopieren und nutzen, aber es wird kein Konto und keine Verzeichnisse erstellt und keine Berechtigungen vergeben.
Wenn Ihr die richtige Umgebung habt und eure eigenen Werte richtig sind, wird es bei den entscheidenen Punkten lauter Echos auswerfen.
Unterhalb dieser Echos stehen im Code, auskommentiert, die "scharfen Befehle".
Ihr findet die Befehle in den Bereichen:
--- Erstellen des Home- und Profilverzeichnisses sowie der Freigabe inklusive Freigabeberechtigungen ---
--- Erstellen des neuen Nutzers ---
--- Vergeben der Rechte fuer das Profilverzeichnis ---
--- Vergeben der Rechte fuer das Homeverzeichnis ---
In den beiden letzten Bereichen müsst Ihr, um es zum Laufen zu bringen, die ganzen REM's rausnehmen.
Das Antragsformular als Worddokument fehlt hier noch.
Dahinter steckt eine Datei mit einem Makro welche im Skript aufgerufen wird.
Das Makro füllt die Formularfelder über eine Textdatei welche vom Skript erstellt wird.
Sollte daran Bedarf bestehen bitte per PM melden.
Sollte viel Bedarf bestehen kann ich den Makrocode hier noch einstellen.
Es ist leider recht komplex geworden, aber ich hoffe trotzdem das ich mich verständlich machen konnte und es jemand behilflich ist.
Vielen Dank für die Aufmerksamkeit.
Gruss,
Destry
01.
@echo off 02.
title Create a new User from Template (no Action, only Echo and Logfile) 03.
04.
:BEGIN_OF_SCRIPT 05.
06.
REM ------------------ Variable setzen ------------------ 07.
08.
set DOMAINNAME=BEISPIEL_DOMAENE 09.
set DNS_DOMAINNAME=BEISPIEL_DOMAENE.net 10.
set FORM_DEPARTMENT=BEISPIEL_ABTEILUNG 11.
set FORM_INTENTION=Anmelden 12.
set FORMFILE_DIR=.\FormFiles 13.
set FORMFILE_NAME=BEISPIEL_FORMULAR.doc 14.
set FORM_FILL_FILE_NAME=Fill_Account_Form.txt 15.
set LOGFILE_DIR=.\LogFiles 16.
set IF_NEW_NEXT_ACCOUNT= 17.
set MAIL_SUFFIX=BEISPIEL_MAIL_SUFFIX.com 18.
set NEW_HOME_DRV=H: 19.
set NEW_STDPWD=BEISPIEL_PASSWORT 20.
set PROGRAM_DIR=.\Programs 21.
set TEMPFILE_DIR=.\TempFiles 22.
set WINWORD_FILE_NAME=winword.exe 23.
set WINWORD_PATH=%PROGRAMFILES%\BEISPIELPFAD_ZU_WORD 24.
25.
26.
27.
REM ------------------ Programmstart ------------------ 28.
29.
30.
REM --- Abfragen nach dem Administrator --- 31.
32.
%PROGRAM_DIR%\dsquery user -samid %USERNAME% | %PROGRAM_DIR%\dsget user -fn > %TEMPFILE_DIR%\%USERNAME%_FirstName_Query_01.txt 33.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%USERNAME%_FirstName_Query_01.txt) do call :SET_QUERY_ADMIN_FIRSTNAME_VAR %%i 34.
goto GO_ON_QUERY_ADMIN_FIRSTNAME 35.
36.
:SET_QUERY_ADMIN_FIRSTNAME_VAR 37.
set TPL_QUERY_ADMIN_FIRSTNAME_VAR=%TPL_QUERY_ADMIN_FIRSTNAME_VAR%!%* 38.
goto :EOF 39.
40.
:GO_ON_QUERY_ADMIN_FIRSTNAME 41.
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_ADMIN_FIRSTNAME_VAR%") do @set ADMIN_FIRSTNAME=%%j 42.
if "%ADMIN_FIRSTNAME%"=="dsget succeeded" @set ADMIN_FIRSTNAME=Diese Kennung hat keinen Vornamen! 43.
44.
%PROGRAM_DIR%\dsquery user -samid %USERNAME% | %PROGRAM_DIR%\dsget user -ln > %TEMPFILE_DIR%\%USERNAME%_LastName_Query_01.txt 45.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%USERNAME%_LastName_Query_01.txt) do call :SET_QUERY_ADMIN_LASTNAME_VAR %%i 46.
goto GO_ON_QUERY_ADMIN_LASTNAME 47.
48.
:SET_QUERY_ADMIN_LASTNAME_VAR 49.
set TPL_QUERY_ADMIN_LASTNAME_VAR=%TPL_QUERY_ADMIN_LASTNAME_VAR%!%* 50.
goto :EOF 51.
52.
:GO_ON_QUERY_ADMIN_LASTNAME 53.
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_ADMIN_LASTNAME_VAR%") do @set ADMIN_LASTNAME=%%j 54.
if "%ADMIN_LASTNAME%"=="dsget succeeded" @set ADMIN_LASTNAME=Diese Kennung hat keinen Nachnamen! 55.
56.
57.
REM --- Abfragen nach Nutzer-Neu und Nutzer-Vorlage mit eventueller Korrektur--- 58.
59.
:TPL_USER_SAMID_INPUT 60.
cls 61.
echo. 62.
echo -------------------------------------------------- 63.
echo. 64.
echo Willkommen %ADMIN_FIRSTNAME% %ADMIN_LASTNAME%! 65.
echo. 66.
echo -------------------------------------------------- 67.
echo. 68.
echo Bitte geben Sie die Kennung des Nutzers ein, welcher als Vorlage dienen soll (z.B. BEISPIELKENNUNG): 69.
set /P TPL_SAMID= 70.
71.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -samid 1>NUL 2>&1 72.
if not %ERRORLEVEL%==0 goto TPL_USER_SAMID_ERROR 73.
74.
:NEW_USER_SAMID_INPUT 75.
cls 76.
echo. 77.
echo -------------------------------------------------- 78.
echo. 79.
echo Bitte geben Sie Informationen zur neuen Nutzerkennung ein: 80.
echo. 81.
set /P NEW_SAMID=Neuer Nutzer - Kennung (z.B. BEISPIELKENNUNG): 82.
83.
%PROGRAM_DIR%\dsquery user -samid %NEW_SAMID% | %PROGRAM_DIR%\dsget user -samid 1>NUL 2>&1 84.
if %ERRORLEVEL%==0 goto NEW_USER_SAMID_ERROR 85.
86.
echo. 87.
set /P NEW_LASTNAME=Neuer Nutzer - Nachname: 88.
echo. 89.
set /P NEW_FIRSTNAME=Neuer Nutzer - Vorname: 90.
echo. 91.
echo Als Mailadresse wird der folgende Wert vorgegeben: 92.
echo. 93.
echo "%NEW_FIRSTNAME%.%NEW_LASTNAME%@%MAIL_SUFFIX%" 94.
echo. 95.
96.
:NEW_USER_MAILADRESS_QUESTION_WRONG_KEY 97.
set /P YES_NO_QUESTION_VAR=Wollen Sie den Wert uebernehmen? J/N : 98.
if /i "%YES_NO_QUESTION_VAR%"=="J" (set NEW_MAILADRESS_VALUE=%NEW_FIRSTNAME%.%NEW_LASTNAME%@%MAIL_SUFFIX%) else (if /i "%YES_NO_QUESTION_VAR%"=="N" (goto NEW_USER_MAILADRESS_QUESTION_OWN_VALUE_WRONG_KEY) else (goto NEW_USER_MAILADRESS_QUESTION_WRONG_KEY)) 99.
goto NEW_USER_MAILADRESS_QUESTION_GO_ON 100.
101.
:NEW_USER_MAILADRESS_QUESTION_OWN_VALUE_WRONG_KEY 102.
set YES_NO_QUESTION_VAR= 103.
set /P YES_NO_QUESTION_VAR=Wollen Sie einen eigenen Wert vorgeben? J/N : 104.
if /i "%YES_NO_QUESTION_VAR%"=="J" (goto NEW_USER_MAILADRESS_QUESTION_STOP) else (if /i "%YES_NO_QUESTION_VAR%"=="N" (set DSADD_PARAMETER_EMAIL=) else (goto NEW_USER_MAILADRESS_QUESTION_OWN_VALUE_WRONG_KEY)) 105.
goto NEW_USER_MAILADRESS_QUESTION_NO_MAILADRESS 106.
107.
REM - E-Mail-Adresse - 108.
:NEW_USER_MAILADRESS_QUESTION_STOP 109.
echo Bitte geben Sie einen neuen Wert vor (z.B. vorname.nachname@BEISPIEL_MAIL_ADRESSE.com): 110.
set /P NEW_MAILADRESS_VALUE= 111.
112.
:NEW_USER_MAILADRESS_QUESTION_GO_ON 113.
set DSADD_PARAMETER_EMAIL=-email "%NEW_MAILADRESS_VALUE%" 114.
115.
:NEW_USER_MAILADRESS_QUESTION_NO_MAILADRESS 116.
set YES_NO_QUESTION_VAR= 117.
echo. 118.
echo -------------------------------------------------- 119.
120.
121.
REM --- Informationen fuer das Antragsformular --- 122.
123.
echo. 124.
echo Folgende Informationen sind fuer das Antragsformular: 125.
echo. 126.
set /P FORM_CHIEF_NAME=Vor- und Nachname des Vorgesetzten: 127.
echo. 128.
set /P FORM_VALID_DATE=Das Konto soll gueltig sein bis: 129.
echo. 130.
set /P FORM_MOTIVATION=Der Grund fuer das Anlegen des Kontos (z.B.: Neuer Mitarbeiter, Projektname, etc.): 131.
echo. 132.
set /P FORM_USER_TYPE=Der Nutzer ist (z.B.: Eigener Mitarbeiter, Fremdfirma, Batch-User, Ausbildung, etc.): 133.
echo. 134.
echo -------------------------------------------------- 135.
136.
137.
REM --- Abfrage wer die Vorlage ist und wer angelegt werden soll --- 138.
139.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -fn > %TEMPFILE_DIR%\%TPL_SAMID%_FirstName_Query_01.txt 140.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_FirstName_Query_01.txt) do call :SET_QUERY_FIRSTNAME_VAR %%i 141.
goto GO_ON_QUERY_FIRSTNAME 142.
143.
:SET_QUERY_FIRSTNAME_VAR 144.
set TPL_QUERY_FIRSTNAME_VAR=%TPL_QUERY_FIRSTNAME_VAR%!%* 145.
goto :EOF 146.
147.
:GO_ON_QUERY_FIRSTNAME 148.
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_FIRSTNAME_VAR%") do @set TPL_FIRSTNAME=%%j 149.
if "%TPL_FIRSTNAME%"=="dsget succeeded" @set TPL_FIRSTNAME=Diese Kennung hat keinen Vornamen! 150.
151.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -ln > %TEMPFILE_DIR%\%TPL_SAMID%_LastName_Query_01.txt 152.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_LastName_Query_01.txt) do call :SET_QUERY_LASTNAME_VAR %%i 153.
goto GO_ON_QUERY_LASTNAME 154.
155.
:SET_QUERY_LASTNAME_VAR 156.
set TPL_QUERY_LASTNAME_VAR=%TPL_QUERY_LASTNAME_VAR%!%* 157.
goto :EOF 158.
159.
:GO_ON_QUERY_LASTNAME 160.
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_LASTNAME_VAR%") do @set TPL_LASTNAME=%%j 161.
if "%TPL_LASTNAME%"=="dsget succeeded" @set TPL_LASTNAME=Diese Kennung hat keinen Nachnamen! 162.
163.
echo. 164.
echo Als Vorlage dient der Nutzer: 165.
echo. 166.
echo Nachname: "%TPL_LASTNAME%" 167.
echo Vorname: "%TPL_FIRSTNAME%" 168.
echo Kennung: "%TPL_SAMID%" 169.
echo. 170.
echo. 171.
echo Angelegt werden soll der Nutzer: 172.
echo. 173.
echo Nachname: "%NEW_LASTNAME%" 174.
echo Vorname: "%NEW_FIRSTNAME%" 175.
echo Kennung: "%NEW_SAMID%" 176.
echo Mailadresse: "%NEW_MAILADRESS_VALUE%" 177.
echo. 178.
echo -------------------------------------------------- 179.
echo. 180.
181.
:ALL_INPUT_QUESTION_WRONG_KEY 182.
set /P YES_NO_QUESTION_VAR=Wollen Sie das Nutzerkonto jetzt anlegen? J/N : 183.
if /i "%YES_NO_QUESTION_VAR%"=="J" (goto ALL_INPUT_QUESTION_GO_ON) else (if /i "%YES_NO_QUESTION_VAR%"=="N" (goto ALL_INPUT_QUESTION_STOP) else (goto ALL_INPUT_QUESTION_WRONG_KEY)) 184.
185.
:ALL_INPUT_QUESTION_GO_ON 186.
set YES_NO_QUESTION_VAR= 187.
echo. 188.
189.
190.
REM --- Abfrage ob der Vorlagen-Nutzer ein Home- und Profilverzeichnis hat --- 191.
192.
REM - Homeverzeichnis- 193.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -hmdir > %TEMPFILE_DIR%\%TPL_SAMID%_hmdir_Query_01.txt 194.
195.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_hmdir_Query_01.txt) do call :SET_NEW_QUERY_HMDIR_VAR %%i 196.
goto GO_ON_QUERY_HMDIR 197.
198.
:SET_NEW_QUERY_HMDIR_VAR 199.
set NEW_QUERY_HMDIR_VAR=%NEW_QUERY_HMDIR_VAR%!%* 200.
goto :EOF 201.
202.
:GO_ON_QUERY_HMDIR 203.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_HMDIR_VAR%") do @set NEW_QUERY_HMSRV_VAR=%%j 204.
for /f "tokens=1 delims=\" %%i in ("%NEW_QUERY_HMSRV_VAR%") do @set NEW_HMSRV=%%i 205.
set IF_NEW_HMSRV=yes 206.
if "%NEW_HMSRV%"=="dsget succeeded" set IF_NEW_HMSRV=no 207.
if "%IF_NEW_HMSRV%"=="no" (set DSADD_PARAMETER_HMDIR= ) else (set DSADD_PARAMETER_HMDIR=-hmdir "\\%NEW_HMSRV%\%NEW_SAMID%$") 208.
209.
210.
REM - Profilverzeichnis- 211.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -profile > %TEMPFILE_DIR%\%TPL_SAMID%_Profile_Query_01.txt 212.
213.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Profile_Query_01.txt) do call :SET_NEW_QUERY_PROFILE_VAR %%i 214.
goto GO_ON_QUERY_PROFILE 215.
216.
:SET_NEW_QUERY_PROFILE_VAR 217.
set NEW_QUERY_PROFILE_VAR=%NEW_QUERY_PROFILE_VAR%!%* 218.
goto :EOF 219.
220.
:GO_ON_QUERY_PROFILE 221.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_PROFILE_VAR%") do @set NEW_QUERY_PROFILE_PATH=%%j 222.
for /f "tokens=1,2 delims=\" %%i in ("%NEW_QUERY_PROFILE_PATH%") do @set NEW_PROFILE_PATH=%%i\%%j 223.
set IF_NEW_PROFILE_PATH=yes 224.
if "%NEW_PROFILE_PATH%"=="dsget succeeded\" set IF_NEW_PROFILE_PATH=no 225.
if "%IF_NEW_PROFILE_PATH%"=="no" (set DSADD_PARAMETER_PROFILE= ) else (set DSADD_PARAMETER_PROFILE=-profile "\\%NEW_PROFILE_PATH%\%NEW_SAMID%") 226.
227.
228.
REM --- Erstellen des Home- und Profilverzeichnisses sowie der Freigabe inklusive Freigabeberechtigungen --- 229.
230.
echo if "%IF_NEW_PROFILE_PATH%"=="yes" md \\%NEW_PROFILE_PATH%\%NEW_SAMID% 231.
echo if "%IF_NEW_HMSRV%"=="yes" md \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% 232.
echo if "%IF_NEW_HMSRV%"=="yes" %PROGRAM_DIR%\rmtshare \\%NEW_HMSRV%\%NEW_SAMID%$=D:\Data\Users\%NEW_SAMID% /UNLIMITED /GRANT "BEISPIEL_DOMAENE\Domain Admins":F /GRANT "Authenticated Users":C /GRANT System:F /REMOVE Everyone /REMARK: 233.
234.
REM if "%IF_NEW_PROFILE_PATH%"=="yes" md \\%NEW_PROFILE_PATH%\%NEW_SAMID% 1>NUL 2>&1 235.
REM if "%IF_NEW_HMSRV%"=="yes" md \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% 1>NUL 2>&1 236.
REM if "%IF_NEW_HMSRV%"=="yes" %PROGRAM_DIR%\rmtshare \\%NEW_HMSRV%\%NEW_SAMID%$=D:\Data\Users\%NEW_SAMID% /UNLIMITED /GRANT "BEISPIEL_DOMAENE\Domain Admins":F /GRANT "Authenticated Users":C /GRANT System:F /REMOVE Everyone /REMARK: 1>NUL 2>&1 237.
238.
239.
REM --- Abfragen um die Parameter des dsadd-Befehls zu fuellen --- 240.
241.
REM - User Principal Name - 242.
set DSADD_PARAMETER_UPN=-upn %NEW_SAMID%@%DNS_DOMAINNAME% 243.
244.
245.
REM - Vorname - 246.
set DSADD_PARAMETER_FN=-fn "%NEW_FIRSTNAME%" 247.
248.
249.
REM - Nachname - 250.
set DSADD_PARAMETER_LN=-ln "%NEW_LASTNAME%" 251.
252.
253.
REM - Anzeigename - 254.
set DSADD_PARAMETER_DISPLAY=-display "%NEW_LASTNAME%, %NEW_FIRSTNAME%" 255.
256.
257.
REM - Passwort fuer die erste Anmeldung - 258.
set DSADD_PARAMETER_PWD=-pwd %NEW_STDPWD% 259.
260.
261.
REM - Distinguished Name - 262.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -dn > %TEMPFILE_DIR%\%TPL_SAMID%_dn_Query_01.txt 263.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_dn_Query_01.txt) do call :SET_NEW_QUERY_DN_VAR %%i 264.
goto GO_ON_QUERY_DN 265.
266.
:SET_NEW_QUERY_DN_VAR 267.
set NEW_QUERY_DN_VAR_01=%NEW_QUERY_DN_VAR_01%!%* 268.
goto :EOF 269.
270.
:GO_ON_QUERY_DN 271.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DN_VAR_01%") do @set NEW_QUERY_DN_VAR_02=%%j 272.
for /f "tokens=1,2,* delims==" %%i in ("%NEW_QUERY_DN_VAR_02%") do @set NEW_QUERY_DN_VAR_03=%%k 273.
set NEW_OBJECTPLACE=OU=%NEW_QUERY_DN_VAR_03% 274.
set NEW_DISTNAME=CN=%NEW_LASTNAME%\, %NEW_FIRSTNAME%,%NEW_OBJECTPLACE% 275.
276.
277.
REM - Beschreibung - 278.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -desc > %TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt 279.
280.
findstr "&" %TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt 1>NUL 2>&1 281.
if %ERRORLEVEL%==0 goto SECOND_WAY_QUERY_DESC 282.
283.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt) do call :SET_NEW_QUERY_DESC_VAR %%i 284.
goto GO_ON_QUERY_DESC 285.
286.
:SET_NEW_QUERY_DESC_VAR 287.
set NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%* 288.
goto :EOF 289.
290.
:GO_ON_QUERY_DESC 291.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j 292.
goto DONE_QUERY_DESC 293.
294.
:SECOND_WAY_QUERY_DESC 295.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt) do call :SECOND_WAY_SET_NEW_QUERY_DESC_VAR "%%i" 296.
goto SECOND_WAY_GO_ON_QUERY_DESC 297.
298.
:SECOND_WAY_SET_NEW_QUERY_DESC_VAR 299.
set "NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%~1" 300.
goto :EOF 301.
302.
:SECOND_WAY_GO_ON_QUERY_DESC 303.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j 304.
305.
:DEL_SPACE_BEGIN 306.
if "%NEW_DESCRIPTION:~0,1%" neq " " goto DEL_SPACE_END 307.
set "NEW_DESCRIPTION=%NEW_DESCRIPTION:~1%" 308.
goto DEL_SPACE_BEGIN 309.
310.
:DEL_SPACE_END 311.
if "%NEW_DESCRIPTION:~-1%" neq " " goto DONE_QUERY_DESC 312.
set "NEW_DESCRIPTION=%NEW_DESCRIPTION:~0,-1%" 313.
goto DEL_SPACE_END 314.
315.
:DONE_QUERY_DESC 316.
set DSADD_PARAMETER_DESC=-desc "%NEW_DESCRIPTION%" 317.
318.
319.
REM - Gruppenmitgliedschaften - 320.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -memberof > %TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_01.txt 321.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_01.txt) do if not %%i=="CN=Domain Users,OU=Global Groups,OU=Domain Groups,DC=BEISPIEL,DC=BEISPIEL,DC=BEISPIEL" call :SET_NEW_QUERY_GROUPS_VAR %%i 322.
goto GO_ON_QUERY_GROUPS 323.
324.
:SET_NEW_QUERY_GROUPS_VAR 325.
set NEW_GROUPS=%NEW_GROUPS% %1 326.
goto :EOF 327.
328.
:GO_ON_QUERY_GROUPS 329.
if "%NEW_GROUPS:~0,1%" equ " " set "NEW_GROUPS=%NEW_GROUPS:~1%" 330.
set DSADD_PARAMETER_MEMBEROF=-memberof %NEW_GROUPS% 331.
332.
333.
REM - Laufwerksbuchstabe fuer das Homeverzeichnis - 334.
if "%IF_NEW_HMSRV%"=="no" (set DSADD_PARAMETER_HMDRV= ) else (set DSADD_PARAMETER_HMDRV=-hmdrv %NEW_HOME_DRV%) 335.
336.
337.
REM - LogonScript - 338.
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -loscr > %TEMPFILE_DIR%\%TPL_SAMID%_LogonScript_Query_01.txt 339.
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_LogonScript_Query_01.txt) do call :SET_NEW_QUERY_LOGONSCRIPT_VAR %%i 340.
goto GO_ON_QUERY_LOGONSCRIPT 341.
342.
:SET_NEW_QUERY_LOGONSCRIPT_VAR 343.
set NEW_QUERY_LOGONSCRIPT_VAR=%NEW_QUERY_LOGONSCRIPT_VAR%!%* 344.
goto :EOF 345.
346.
:GO_ON_QUERY_LOGONSCRIPT 347.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_LOGONSCRIPT_VAR%") do @set NEW_LOGONSCRIPT=%%j 348.
if "%NEW_LOGONSCRIPT%"=="dsget succeeded" (set IF_NEW_LOGONSCRIPT=no) else (set IF_NEW_LOGONSCRIPT=yes) 349.
if "%IF_NEW_LOGONSCRIPT%"=="no" (set DSADD_PARAMETER_LOSCR= ) else (set DSADD_PARAMETER_LOSCR=-loscr "%NEW_LOGONSCRIPT%") 350.
351.
352.
REM --- Erstellen des neuen Nutzers --- 353.
354.
REM - Flexibler Dsadd-Befehl - 355.
echo %PROGRAM_DIR%\dsadd user "%NEW_DISTNAME%" -samid %NEW_SAMID% %DSADD_PARAMETER_UPN% %DSADD_PARAMETER_FN% %DSADD_PARAMETER_LN% %DSADD_PARAMETER_DISPLAY% %DSADD_PARAMETER_PWD% %DSADD_PARAMETER_DESC% %DSADD_PARAMETER_MEMBEROF% %DSADD_PARAMETER_EMAIL% %DSADD_PARAMETER_HMDIR% %DSADD_PARAMETER_HMDRV% %DSADD_PARAMETER_PROFILE% %DSADD_PARAMETER_LOSCR% -mustchpwd yes -disabled yes 356.
REM %PROGRAM_DIR%\dsadd user "%NEW_DISTNAME%" -samid %NEW_SAMID% %DSADD_PARAMETER_UPN% %DSADD_PARAMETER_FN% %DSADD_PARAMETER_LN% %DSADD_PARAMETER_DISPLAY% %DSADD_PARAMETER_PWD% %DSADD_PARAMETER_DESC% %DSADD_PARAMETER_MEMBEROF% %DSADD_PARAMETER_EMAIL% %DSADD_PARAMETER_HMDIR% %DSADD_PARAMETER_HMDRV% %DSADD_PARAMETER_PROFILE% %DSADD_PARAMETER_LOSCR% -mustchpwd yes -disabled yes 1>NUL 2>&1 357.
if not %ERRORLEVEL%==0 goto DSADD_ERROR 358.
359.
360.
REM - Beispiel fuer festen Dsadd-Befehl, nur zur Dokumentation- 361.
REM dsadd user "%NEW_DISTNAME%" -samid %NEW_SAMID% -upn %NEW_SAMID%@%DNS_DOMAINNAME% -fn %NEW_FIRSTNAME% -ln %NEW_LASTNAME% -display "%NEW_LASTNAME%, %NEW_FIRSTNAME%" -pwd %NEW_STDPWD% -desc "%NEW_DESCRIPTION%" -memberof %NEW_GROUPS% -email %NEW_FIRSTNAME%.%NEW_LASTNAME%@%MAIL_SUFFIX% -hmdir "\\%NEW_HMSRV%\%NEW_SAMID%$" -hmdrv %NEW_HOME_DRV% -profile "\\%NEW_PROFILE_PATH%\%NEW_SAMID%" -loscr "%NEW_LOGONSCRIPT%" -mustchpwd yes -disabled yes 362.
363.
364.
REM --- Vergeben der Rechte fuer das Profilverzeichnis --- 365.
366.
if "%IF_NEW_PROFILE_PATH%"=="no" goto NO_SET_CACLS_PROFILE_PATH 367.
368.
REM set /A TRIALS=0 1>NUL 2>&1 369.
REM set /A SLEEP_PARAMETER=0 1>NUL 2>&1 370.
371.
REM :SET_CACLS_PROFILE_PATH_BEGIN 372.
REM if %TRIALS%==10 goto SET_CACLS_PROFILE_PATH_ERROR 373.
REM .\Programs\sleep %SLEEP_PARAMETER% 374.
375.
REM set /A TRIALS=%TRIALS% + 1 1>NUL 2>&1 376.
REM set /A SLEEP_PARAMETER=%SLEEP_PARAMETER% + 5 1>NUL 2>&1 377.
378.
echo cacls.exe \\%NEW_PROFILE_PATH%\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C /R "Domain Users" 379.
REM cacls.exe \\%NEW_PROFILE_PATH%\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C /R "Domain Users" 1>NUL 2>&1 380.
REM if %ERRORLEVEL%==0 (goto SET_CACLS_PROFILE_PATH_GO_ON) else (goto SET_CACLS_PROFILE_PATH_BEGIN) 381.
382.
REM :SET_CACLS_PROFILE_PATH_GO_ON 383.
REM set IF_CACLS_PROFILE_PATH=yes 384.
REM goto SET_CACLS_PROFILE_PATH_END 385.
386.
REM :SET_CACLS_PROFILE_PATH_ERROR 387.
REM set IF_CACLS_PROFILE_PATH=no 388.
REM echo. 389.
REM echo Es gab Probleme beim Setzen der Berechtigungen des Profilverzeichnisses. 390.
REM echo Bitte pruefen Sie die Log-Datei. 391.
REM echo -------------------------------------------------- 392.
REM goto SET_CACLS_PROFILE_PATH_END 393.
394.
REM :SET_CACLS_PROFILE_PATH_END 395.
REM set TRIALS= 396.
REM set SLEEP_PARAMETER= 397.
398.
:NO_SET_CACLS_PROFILE_PATH 399.
400.
401.
REM --- Vergeben der Rechte fuer das Homeverzeichnis --- 402.
403.
if "%IF_NEW_HMSRV%"=="no" goto NO_SET_CACLS_HOMEDIR 404.
405.
REM set /A TRIALS=0 1>NUL 2>&1 406.
REM set /A SLEEP_PARAMETER=0 1>NUL 2>&1 407.
408.
REM :SET_CACLS_HOMEDIR_BEGIN 409.
REM if %TRIALS%==10 goto SET_CACLS_HOMEDIR_ERROR 410.
REM .\Programs\sleep %SLEEP_PARAMETER% 411.
412.
REM set /A TRIALS=%TRIALS% + 1 1>NUL 2>&1 413.
REM set /A SLEEP_PARAMETER=%SLEEP_PARAMETER% + 5 1>NUL 2>&1 414.
415.
echo cacls.exe \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C 416.
REM cacls.exe \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C 1>NUL 2>&1 417.
REM if %ERRORLEVEL%==0 (goto SET_CACLS_HOMEDIR_GO_ON) else (goto SET_CACLS_HOMEDIR_BEGIN) 418.
419.
REM :SET_CACLS_HOMEDIR_GO_ON 420.
REM set IF_CACLS_HOMEDIR=yes 421.
REM goto SET_CACLS_HOMEDIR_END 422.
423.
REM :SET_CACLS_HOMEDIR_ERROR 424.
REM set IF_CACLS_HOMEDIR=no 425.
REM echo. 426.
REM echo Es gab Probleme beim Setzen der Berechtigungen des Homeverzeichnisses. 427.
REM echo Bitte pruefen Sie die Log-Datei. 428.
REM echo -------------------------------------------------- 429.
REM goto SET_CACLS_HOMEDIR_END 430.
431.
REM :SET_CACLS_HOMEDIR_END 432.
REM set TRIALS= 433.
REM set SLEEP_PARAMETER= 434.
435.
:NO_SET_CACLS_HOMEDIR 436.
437.
438.
REM --- Weitere Konfigurationen --- 439.
440.
BEISPIEL 441.
442.
443.
REM --- Erstellen der Textdatei fuer das Antragsformular --- 444.
445.
REM -Abfrage nach den Gruppen- 446.
447.
for /f "delims=," %%a in (%TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_01.txt) do @echo %%a>> %TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_Form.txt 448.
449.
for /f "tokens=2 delims==" %%a in (%TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_Form.txt) do call :SET_NEW_QUERY_GROUPS_FORM_VAR "%%a" 450.
goto GO_ON_QUERY_GROUPS_FORM 451.
452.
:SET_NEW_QUERY_GROUPS_FORM_VAR 453.
set NEW_GROUPS_FORM=%NEW_GROUPS_FORM% %1, 454.
goto :EOF 455.
456.
:GO_ON_QUERY_GROUPS_FORM 457.
if "%NEW_GROUPS_FORM:~0,1%" equ " " set "NEW_GROUPS_FORM=%NEW_GROUPS_FORM:~1%" 458.
set NEW_GROUPS_FORM=%NEW_GROUPS_FORM:~0,-1% 459.
460.
461.
echo FormIntention=%FORM_INTENTION%>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 462.
echo UserID=%NEW_SAMID%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 463.
echo UserNameRev=%NEW_LASTNAME%, %NEW_FIRSTNAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 464.
echo Department=%FORM_DEPARTMENT%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 465.
echo ValidDate=%FORM_VALID_DATE%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 466.
echo Motivation=%FORM_MOTIVATION%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 467.
echo UserType=%FORM_USER_TYPE%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 468.
echo ChiefName=%FORM_CHIEF_NAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 469.
echo UserName=%NEW_FIRSTNAME% %NEW_LASTNAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 470.
echo Groups=%NEW_GROUPS_FORM%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 471.
echo AdministratorName=%ADMIN_LASTNAME%, %ADMIN_FIRSTNAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 472.
473.
474.
REM --- Aufruf des Antragsformulars --- 475.
476.
if exist %WINWORD_PATH%\%WINWORD_FILE_NAME% (goto CREATE_ACCOUNT_FORM_GO_ON) else (goto WINWORD_FIND_ERROR) 477.
478.
:CREATE_ACCOUNT_FORM_GO_ON 479.
copy /Y "%FORMFILE_DIR%\%FORMFILE_NAME%" "%LOGFILE_DIR%\%NEW_LASTNAME%_%NEW_FIRSTNAME%_%NEW_SAMID%_Create_Account_from_Template.doc" 1>NUL 2>&1 480.
start %WINWORD_PATH%\%WINWORD_FILE_NAME% %LOGFILE_DIR%\%NEW_LASTNAME%_%NEW_FIRSTNAME%_%NEW_SAMID%_Create_Account_from_Template.doc /MFilltheFields 481.
goto CREATE_ACCOUNT_FORM_END 482.
483.
:WINWORD_FIND_ERROR 484.
echo. 485.
echo -------------------------------------------------- 486.
echo. 487.
echo Fehler beim Oeffnen des Antragsformulars. 488.
echo Es ist kein Word-Programm installiert, bzw. das Word-Programm kann nicht gefunden werden. 489.
echo. 490.
echo -------------------------------------------------- 491.
goto CREATE_ACCOUNT_FORM_END 492.
493.
:CREATE_ACCOUNT_FORM_END 494.
495.
496.
REM --- Ausgabe einer Log-Datei was mit welchen Werten angelegt wurde --- 497.
498.
set CREATE_ACC_FROM_COPY_LOGFILE=%LOGFILE_DIR%\%NEW_LASTNAME%_%NEW_FIRSTNAME%_%NEW_SAMID%_Create_Account_from_Copy.log 499.
500.
echo.>"%CREATE_ACC_FROM_COPY_LOGFILE%" 501.
echo ----- Log-Datei ueber die Anlage eines neuen Nutzerkontos auf Basis einer Vorlage ----->>"%CREATE_ACC_FROM_COPY_LOGFILE%" 502.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 503.
echo Erstellt von %ADMIN_FIRSTNAME% %ADMIN_LASTNAME% (Kennung: %USERNAME%) am %DATE%, um %TIME% Uhr.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 504.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 505.
echo Der Befehl zur Erstellung des Nutzers lautet:>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 506.
echo dsadd user "%NEW_DISTNAME%" -samid %NEW_SAMID% %DSADD_PARAMETER_UPN% %DSADD_PARAMETER_FN% %DSADD_PARAMETER_LN% %DSADD_PARAMETER_DISPLAY% %DSADD_PARAMETER_PWD% %DSADD_PARAMETER_DESC% %DSADD_PARAMETER_MEMBEROF% %DSADD_PARAMETER_EMAIL% %DSADD_PARAMETER_HMDIR% %DSADD_PARAMETER_HMDRV% %DSADD_PARAMETER_PROFILE% %DSADD_PARAMETER_LOSCR% -mustchpwd yes -disabled yes>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 507.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 508.
echo --- Information zur Nutzervorlage --->>"%CREATE_ACC_FROM_COPY_LOGFILE%" 509.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 510.
echo Nachname: "%TPL_LASTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 511.
echo Vorname: "%TPL_FIRSTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 512.
echo Kennung: "%TPL_SAMID%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 513.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 514.
if "%IF_NEW_HMSRV%"=="no" (echo "Die Vorlage hat kein Homeverzeichnis.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo "Die Vorlage hat ein Homeverzeichnis.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 515.
if "%IF_NEW_PROFILE_PATH%"=="no" (echo "Die Vorlage hat kein Profilverzeichnis.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo "Die Vorlage hat ein Profilverzeichnis.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 516.
if "%IF_NEW_LOGONSCRIPT%"=="no" (echo "Die Vorlage hat kein Logon-Script.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo "Die Vorlage hat ein Logon-Script.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 517.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 518.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 519.
echo --- Information zum neuen Nutzer --->>"%CREATE_ACC_FROM_COPY_LOGFILE%" 520.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 521.
echo Nachname: "%NEW_LASTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 522.
echo Vorname: "%NEW_FIRSTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 523.
echo Kennung: "%NEW_SAMID%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 524.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 525.
echo Distinguished Name: "%NEW_DISTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 526.
echo User Principal Name: "%NEW_SAMID%@%DNS_DOMAINNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 527.
echo Anzeigename: "%NEW_LASTNAME%, %NEW_FIRSTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 528.
echo Beschreibung: "%NEW_DESCRIPTION%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 529.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 530.
echo Der Nutzer ist Mitglied in folgenden Gruppen:>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 531.
echo %NEW_GROUPS%>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 532.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 533.
echo Mailadresse: "%NEW_MAILADRESS_VALUE%">>"%CREATE_ACC_FROM_COPY_LOGFILE%" 534.
if "%IF_NEW_HMSRV%"=="no" (echo Homelaufwerk: "Es wurde kein Homelaufwerk vergeben.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo Home-Laufwerk: "%NEW_HOME_DRV%">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 535.
if "%IF_NEW_HMSRV%"=="no" (echo Homeverzeichnis: "Es wurde kein Homeverzeichnis erstellt.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo Homeverzeichnis-Freigabe: "\\%NEW_HMSRV%\%NEW_SAMID%$">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 536.
if "%IF_NEW_PROFILE_PATH%"=="no" (echo Profilverzeichnis: "Es wurde kein Profilverzeichnis erstellt".>>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo Profilverzeichnis: "\\%NEW_PROFILE_PATH%\%NEW_SAMID%">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 537.
if "%IF_NEW_LOGONSCRIPT%"=="no" (echo Logon-Script: "Es wurde kein Logon-Script eingestellt.">>"%CREATE_ACC_FROM_COPY_LOGFILE%") else (echo Logon-Script: "%NEW_LOGONSCRIPT%">>"%CREATE_ACC_FROM_COPY_LOGFILE%") 538.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 539.
echo Es wurde ein Passwort zur Erstanmeldung vergeben.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 540.
echo Der Nutzer muss das Passwort bei der Erstanmeldung aendern.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 541.
echo Das Konto wurde deaktiviert.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 542.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 543.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 544.
echo !!! WICHTIG !!!>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 545.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 546.
echo --- Manuell notwendige Anpassungen: --->>"%CREATE_ACC_FROM_COPY_LOGFILE%" 547.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 548.
if "%IF_CACLS_PROFILE_PATH%"=="no" echo Pruefen Sie die Berechtigungen auf dem Profilverzeichnis.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 549.
if "%IF_CACLS_HOMEDIR%"=="no" echo Pruefen Sie die Berechtigungen auf dem Homeverzeichnis.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 550.
echo Weitere notwendige Gruppen weisen Sie dem Nutzerkonto bitte manuell zu.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 551.
echo Einen anderen Standort im Active Directory weisen Sie dem Nutzerkonto bitte manuell zu.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 552.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 553.
echo !!! WICHTIG !!!>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 554.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 555.
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%" 556.
echo ----- Ende ----->>"%CREATE_ACC_FROM_COPY_LOGFILE%" 557.
558.
goto NO_ERRORS 559.
560.
REM --- Abbrueche durch fehlerhafte Eingaben --- 561.
562.
REM -Abbruch nach der Frage ob die Eingaben korrekt sind- 563.
:ALL_INPUT_QUESTION_STOP 564.
goto BREAK_PROGRAM 565.
566.
567.
REM -Fehler beim Dsadd-Befehl- 568.
:DSADD_ERROR 569.
570.
set CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE=%LOGFILE_DIR%\%NEW_SAMID%_Create_Account_from_Copy_Dsadd_Error.log 571.
572.
echo.>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 573.
echo ----- Log-Datei fuer Dsadd-Error ----->>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 574.
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 575.
echo Erstellt am %DATE%, um %TIME% Uhr.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 576.
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 577.
echo Der Befehl zur Erstellung des Nutzers lautet:>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 578.
echo dsadd user "%NEW_DISTNAME%" -samid %NEW_SAMID% %DSADD_PARAMETER_UPN% %DSADD_PARAMETER_FN% %DSADD_PARAMETER_LN% %DSADD_PARAMETER_DISPLAY% %DSADD_PARAMETER_PWD% %DSADD_PARAMETER_DESC% %DSADD_PARAMETER_MEMBEROF% %DSADD_PARAMETER_EMAIL% %DSADD_PARAMETER_HMDIR% %DSADD_PARAMETER_HMDRV% %DSADD_PARAMETER_PROFILE% %DSADD_PARAMETER_LOSCR% -mustchpwd yes -disabled yes>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 579.
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 580.
echo Die Fehlermeldung beim Befehl zur Erstellung des Nutzers lautet:>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 581.
dsadd user "%NEW_DISTNAME%" -samid %NEW_SAMID% %DSADD_PARAMETER_UPN% %DSADD_PARAMETER_FN% %DSADD_PARAMETER_LN% %DSADD_PARAMETER_DISPLAY% %DSADD_PARAMETER_PWD% %DSADD_PARAMETER_DESC% %DSADD_PARAMETER_MEMBEROF% %DSADD_PARAMETER_EMAIL% %DSADD_PARAMETER_HMDIR% %DSADD_PARAMETER_HMDRV% %DSADD_PARAMETER_PROFILE% %DSADD_PARAMETER_LOSCR% -mustchpwd yes -disabled yes 2>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 582.
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 583.
echo ----- Ende ----->>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%" 584.
585.
echo -------------------------------------------------- 586.
echo. 587.
echo Es gab ein Problem beim Dsadd-Befehl. 588.
echo Home- und Profilverzeichnisse koennten erstellt worden sein. 589.
echo. 590.
echo -------------------------------------------------- 591.
goto BREAK_PROGRAM 592.
593.
594.
REM -Falsche Kennung des neuen Nutzers- 595.
:NEW_USER_SAMID_ERROR 596.
echo. 597.
echo Ein Nutzerkonto mit der Kennung "%NEW_SAMID%" existiert bereits. 598.
599.
:NEW_USER_SAMID_ERROR_WRONG_KEY 600.
set /P YES_NO_QUESTION_VAR=Wollen Sie eine andere Kennung eingeben? J/N : 601.
if /i "%YES_NO_QUESTION_VAR%"=="J" (goto NEW_USER_SAMID_ERROR_GO_ON) else (if /i "%YES_NO_QUESTION_VAR%"=="N" (goto NEW_USER_SAMID_ERROR_STOP) else (goto NEW_USER_SAMID_ERROR_WRONG_KEY)) 602.
603.
:NEW_USER_SAMID_ERROR_GO_ON 604.
set NEW_SAMID= 605.
set YES_NO_QUESTION_VAR= 606.
goto NEW_USER_SAMID_INPUT 607.
608.
:NEW_USER_SAMID_ERROR_STOP 609.
goto BREAK_PROGRAM 610.
611.
612.
REM -Falsche Kennung des alten Nutzers- 613.
:TPL_USER_SAMID_ERROR 614.
echo. 615.
echo Ein Nutzerkonto mit der Kennung "%TPL_SAMID%" existiert nicht. 616.
617.
:TPL_USER_SAMID_ERROR_WRONG_KEY 618.
set /P YES_NO_QUESTION_VAR=Wollen Sie eine andere Kennung eingeben? J/N : 619.
if /i "%YES_NO_QUESTION_VAR%"=="J" (goto TPL_USER_SAMID_ERROR_GO_ON) else (if /i "%YES_NO_QUESTION_VAR%"=="N" (goto TPL_USER_SAMID_ERROR_STOP) else (goto TPL_USER_SAMID_ERROR_WRONG_KEY)) 620.
621.
:TPL_USER_SAMID_ERROR_GO_ON 622.
set TPL_SAMID= 623.
set YES_NO_QUESTION_VAR= 624.
goto TPL_USER_SAMID_INPUT 625.
626.
:TPL_USER_SAMID_ERROR_STOP 627.
goto BREAK_PROGRAM 628.
629.
630.
:BREAK_PROGRAM 631.
echo -------------------------------------------------- 632.
echo. 633.
echo Das Programm wird abgebrochen. 634.
echo Es wurde kein neues Nutzerkonto angelegt. 635.
echo. 636.
echo -------------------------------------------------- 637.
goto CLEAR_SCRIPTWORK 638.
639.
640.
:NO_ERRORS 641.
echo -------------------------------------------------- 642.
echo. 643.
echo Das Nutzerkonto wurde erstellt. 644.
:NEW_SEE_LOGFILE_ERROR_WRONG_KEY 645.
set /P YES_NO_QUESTION_VAR=Wollen Sie die Log-Datei sehen? J/N : 646.
if /i "%YES_NO_QUESTION_VAR%"=="J" (start notepad "%CREATE_ACC_FROM_COPY_LOGFILE%") else (if /i "%YES_NO_QUESTION_VAR%"=="N" (echo Sie finden die Log-Datei hier: "%CREATE_ACC_FROM_COPY_LOGFILE%".) else (goto NEW_SEE_LOGFILE_ERROR_WRONG_KEY)) 647.
set YES_NO_QUESTION_VAR= 648.
echo. 649.
echo -------------------------------------------------- 650.
echo. 651.
:NEW_NEXT_ACCOUNT_ERROR_WRONG_KEY 652.
set /P YES_NO_QUESTION_VAR=Wollen Sie ein weiteres Nutzerkonto erstellen? J/N : 653.
if /i "%YES_NO_QUESTION_VAR%"=="J" (set IF_NEW_NEXT_ACCOUNT=yes) else (if /i "%YES_NO_QUESTION_VAR%"=="N" (set IF_NEW_NEXT_ACCOUNT=no) else (goto NEW_NEXT_ACCOUNT_ERROR_WRONG_KEY)) 654.
set YES_NO_QUESTION_VAR= 655.
echo. 656.
echo -------------------------------------------------- 657.
658.
659.
:CLEAR_SCRIPTWORK 660.
%PROGRAM_DIR%\sleep 2 661.
REM --- Temporaere Dateien loeschen --- 662.
663.
del %TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 1>NUL 2>&1 664.
del %TEMPFILE_DIR%\%TPL_SAMID%_*.txt 1>NUL 2>&1 665.
del %TEMPFILE_DIR%\%USERNAME%_*.txt 1>NUL 2>&1 666.
667.
668.
REM ------------------ Variable loeschen ------------------ 669.
670.
set ADMIN_FIRSTNAME= 671.
set ADMIN_LASTNAME= 672.
set CREATE_ACC_FROM_COPY_LOGFILE= 673.
set CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE= 674.
set DOMAINNAME= 675.
set DNS_DOMAINNAME= 676.
set DSADD_PARAMETER_UPN= 677.
set DSADD_PARAMETER_FN= 678.
set DSADD_PARAMETER_LN= 679.
set DSADD_PARAMETER_DISPLAY= 680.
set DSADD_PARAMETER_PWD= 681.
set DSADD_PARAMETER_DESC= 682.
set DSADD_PARAMETER_MEMBEROF= 683.
set DSADD_PARAMETER_EMAIL= 684.
set DSADD_PARAMETER_HMDIR= 685.
set DSADD_PARAMETER_HMDRV= 686.
set DSADD_PARAMETER_PROFILE= 687.
set DSADD_PARAMETER_LOSCR= 688.
set FORM_CHIEF_NAME= 689.
set FORM_DEPARTMENT= 690.
set FORM_INTENTION= 691.
set FORM_MOTIVATION= 692.
set FORM_USER_TYPE= 693.
set FORM_VALID_DATE= 694.
set FORMFILE_DIR= 695.
set FORMFILE_NAME= 696.
set FORM_FILL_FILE_NAME= 697.
set IF_CACLS_HOMEDIR= 698.
set IF_CACLS_PROFILE_PATH= 699.
set IF_NEW_HMSRV= 700.
set IF_NEW_LOGONSCRIPT= 701.
set IF_NEW_PROFILE_PATH= 702.
set LOGFILE_DIR= 703.
set MAIL_SUFFIX= 704.
set NEW_DESCRIPTION= 705.
set NEW_DISTNAME= 706.
set NEW_FIRSTNAME= 707.
set NEW_GROUPS= 708.
set NEW_GROUPS_FORM= 709.
set NEW_HOME_DRV= 710.
set NEW_HMSRV= 711.
set NEW_LASTNAME= 712.
set NEW_LOGONSCRIPT= 713.
set NEW_MAILADRESS_VALUE= 714.
set NEW_OBJECTPLACE= 715.
set NEW_QUERY_DESC_VAR= 716.
set NEW_QUERY_DN_VAR_01= 717.
set NEW_QUERY_DN_VAR_02= 718.
set NEW_QUERY_DN_VAR_03= 719.
set NEW_QUERY_HMDIR_VAR= 720.
set NEW_QUERY_HMSRV_VAR= 721.
set NEW_QUERY_LOGONSCRIPT_VAR= 722.
set NEW_QUERY_PROFILE_PATH= 723.
set NEW_QUERY_PROFILE_VAR= 724.
set NEW_PROFILE_PATH= 725.
set NEW_SAMID= 726.
set NEW_STDPWD= 727.
set PROGRAM_DIR= 728.
set TEMPFILE_DIR= 729.
set TPL_FIRSTNAME= 730.
set TPL_LASTNAME= 731.
set TPL_QUERY_ADMIN_FIRSTNAME_VAR= 732.
set TPL_QUERY_ADMIN_LASTNAME_VAR= 733.
set TPL_QUERY_FIRSTNAME_VAR= 734.
set TPL_QUERY_LASTNAME_VAR= 735.
set TPL_SAMID= 736.
set WINWORD_FILE_NAME= 737.
set WINWORD_PATH= 738.
set YES_NO_QUESTION_VAR= 739.
740.
if "%IF_NEW_NEXT_ACCOUNT%"=="yes" (goto BEGIN_OF_SCRIPT) else (goto END_OF_SCRIPT) 741.
742.
:END_OF_SCRIPT 743.
set IF_NEW_NEXT_ACCOUNT= 744.
REM exit 745.




