destry
Goto Top

Nutzerkonten auf Basis einer Vorlage in Windowsdomänen anlegen

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

@echo off
title Create a new User from Template (no Action, only Echo and Logfile)

:BEGIN_OF_SCRIPT

REM ------------------ Variable setzen ------------------

set DOMAINNAME=BEISPIEL_DOMAENE
set DNS_DOMAINNAME=BEISPIEL_DOMAENE.net
set FORM_DEPARTMENT=BEISPIEL_ABTEILUNG
set FORM_INTENTION=Anmelden
set FORMFILE_DIR=.\FormFiles
set FORMFILE_NAME=BEISPIEL_FORMULAR.doc
set FORM_FILL_FILE_NAME=Fill_Account_Form.txt
set LOGFILE_DIR=.\LogFiles
set IF_NEW_NEXT_ACCOUNT=
set MAIL_SUFFIX=BEISPIEL_MAIL_SUFFIX.com
set NEW_HOME_DRV=H:
set NEW_STDPWD=BEISPIEL_PASSWORT
set PROGRAM_DIR=.\Programs
set TEMPFILE_DIR=.\TempFiles
set WINWORD_FILE_NAME=winword.exe
set WINWORD_PATH=%PROGRAMFILES%\BEISPIELPFAD_ZU_WORD



REM ------------------ Programmstart ------------------


REM --- Abfragen nach dem Administrator ---

%PROGRAM_DIR%\dsquery user -samid %USERNAME% | %PROGRAM_DIR%\dsget user -fn > %TEMPFILE_DIR%\%USERNAME%_FirstName_Query_01.txt
for /f "delims=" %%i in (%TEMPFILE_DIR%\%USERNAME%_FirstName_Query_01.txt) do call :SET_QUERY_ADMIN_FIRSTNAME_VAR %%i  
goto GO_ON_QUERY_ADMIN_FIRSTNAME

:SET_QUERY_ADMIN_FIRSTNAME_VAR
set TPL_QUERY_ADMIN_FIRSTNAME_VAR=%TPL_QUERY_ADMIN_FIRSTNAME_VAR%!%*
goto :EOF

:GO_ON_QUERY_ADMIN_FIRSTNAME
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_ADMIN_FIRSTNAME_VAR%") do @set ADMIN_FIRSTNAME=%%j  
if "%ADMIN_FIRSTNAME%"=="dsget succeeded" @set ADMIN_FIRSTNAME=Diese Kennung hat keinen Vornamen!  

%PROGRAM_DIR%\dsquery user -samid %USERNAME% | %PROGRAM_DIR%\dsget user -ln > %TEMPFILE_DIR%\%USERNAME%_LastName_Query_01.txt
for /f "delims=" %%i in (%TEMPFILE_DIR%\%USERNAME%_LastName_Query_01.txt) do call :SET_QUERY_ADMIN_LASTNAME_VAR %%i  
goto GO_ON_QUERY_ADMIN_LASTNAME

:SET_QUERY_ADMIN_LASTNAME_VAR
set TPL_QUERY_ADMIN_LASTNAME_VAR=%TPL_QUERY_ADMIN_LASTNAME_VAR%!%*
goto :EOF

:GO_ON_QUERY_ADMIN_LASTNAME
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_ADMIN_LASTNAME_VAR%") do @set ADMIN_LASTNAME=%%j  
if "%ADMIN_LASTNAME%"=="dsget succeeded" @set ADMIN_LASTNAME=Diese Kennung hat keinen Nachnamen!  


REM --- Abfragen nach Nutzer-Neu und Nutzer-Vorlage mit eventueller Korrektur---

:TPL_USER_SAMID_INPUT
cls
echo.
echo --------------------------------------------------
echo.
echo Willkommen %ADMIN_FIRSTNAME% %ADMIN_LASTNAME%!
echo.
echo --------------------------------------------------
echo.
echo Bitte geben Sie die Kennung des Nutzers ein, welcher als Vorlage dienen soll (z.B. BEISPIELKENNUNG):
set /P TPL_SAMID=

%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -samid 1>NUL 2>&1
if not %ERRORLEVEL%==0 goto TPL_USER_SAMID_ERROR

:NEW_USER_SAMID_INPUT
cls
echo.
echo --------------------------------------------------
echo.
echo Bitte geben Sie Informationen zur neuen Nutzerkennung ein:
echo.
set /P NEW_SAMID=Neuer Nutzer - Kennung (z.B. BEISPIELKENNUNG): 

%PROGRAM_DIR%\dsquery user -samid %NEW_SAMID% | %PROGRAM_DIR%\dsget user -samid 1>NUL 2>&1
if %ERRORLEVEL%==0 goto NEW_USER_SAMID_ERROR

echo.
set /P NEW_LASTNAME=Neuer Nutzer - Nachname: 
echo.
set /P NEW_FIRSTNAME=Neuer Nutzer - Vorname: 
echo.
echo Als Mailadresse wird der folgende Wert vorgegeben:
echo.
echo     "%NEW_FIRSTNAME%.%NEW_LASTNAME%@%MAIL_SUFFIX%"  
echo.

:NEW_USER_MAILADRESS_QUESTION_WRONG_KEY
set /P YES_NO_QUESTION_VAR=Wollen Sie den Wert uebernehmen? J/N : 
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))  
goto NEW_USER_MAILADRESS_QUESTION_GO_ON

:NEW_USER_MAILADRESS_QUESTION_OWN_VALUE_WRONG_KEY
set YES_NO_QUESTION_VAR=
set /P YES_NO_QUESTION_VAR=Wollen Sie einen eigenen Wert vorgeben? J/N : 
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))  
goto NEW_USER_MAILADRESS_QUESTION_NO_MAILADRESS

REM - E-Mail-Adresse -
:NEW_USER_MAILADRESS_QUESTION_STOP
echo Bitte geben Sie einen neuen Wert vor (z.B. vorname.nachname@BEISPIEL_MAIL_ADRESSE.com):
set /P NEW_MAILADRESS_VALUE=

:NEW_USER_MAILADRESS_QUESTION_GO_ON
set DSADD_PARAMETER_EMAIL=-email "%NEW_MAILADRESS_VALUE%"  

:NEW_USER_MAILADRESS_QUESTION_NO_MAILADRESS
set YES_NO_QUESTION_VAR=
echo.
echo --------------------------------------------------


REM --- Informationen fuer das Antragsformular ---

echo.
echo Folgende Informationen sind fuer das Antragsformular:
echo.
set /P FORM_CHIEF_NAME=Vor- und Nachname des Vorgesetzten: 
echo.
set /P FORM_VALID_DATE=Das Konto soll gueltig sein bis: 
echo.
set /P FORM_MOTIVATION=Der Grund fuer das Anlegen des Kontos (z.B.: Neuer Mitarbeiter, Projektname, etc.): 
echo.
set /P FORM_USER_TYPE=Der Nutzer ist (z.B.: Eigener Mitarbeiter, Fremdfirma, Batch-User, Ausbildung, etc.): 
echo.
echo --------------------------------------------------


REM --- Abfrage wer die Vorlage ist und wer angelegt werden soll ---

%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -fn > %TEMPFILE_DIR%\%TPL_SAMID%_FirstName_Query_01.txt
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_FirstName_Query_01.txt) do call :SET_QUERY_FIRSTNAME_VAR %%i  
goto GO_ON_QUERY_FIRSTNAME

:SET_QUERY_FIRSTNAME_VAR
set TPL_QUERY_FIRSTNAME_VAR=%TPL_QUERY_FIRSTNAME_VAR%!%*
goto :EOF

:GO_ON_QUERY_FIRSTNAME
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_FIRSTNAME_VAR%") do @set TPL_FIRSTNAME=%%j  
if "%TPL_FIRSTNAME%"=="dsget succeeded" @set TPL_FIRSTNAME=Diese Kennung hat keinen Vornamen!  

%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -ln > %TEMPFILE_DIR%\%TPL_SAMID%_LastName_Query_01.txt
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_LastName_Query_01.txt) do call :SET_QUERY_LASTNAME_VAR %%i  
goto GO_ON_QUERY_LASTNAME

:SET_QUERY_LASTNAME_VAR
set TPL_QUERY_LASTNAME_VAR=%TPL_QUERY_LASTNAME_VAR%!%*
goto :EOF

:GO_ON_QUERY_LASTNAME
for /f "tokens=1,2 delims=!" %%i in ("%TPL_QUERY_LASTNAME_VAR%") do @set TPL_LASTNAME=%%j  
if "%TPL_LASTNAME%"=="dsget succeeded" @set TPL_LASTNAME=Diese Kennung hat keinen Nachnamen!  

echo.
echo Als Vorlage dient der Nutzer:
echo.
echo   Nachname: "%TPL_LASTNAME%"  
echo   Vorname: "%TPL_FIRSTNAME%"  
echo   Kennung: "%TPL_SAMID%"  
echo.
echo.
echo Angelegt werden soll der Nutzer:
echo.
echo   Nachname: "%NEW_LASTNAME%"  
echo   Vorname: "%NEW_FIRSTNAME%"  
echo   Kennung: "%NEW_SAMID%"  
echo   Mailadresse: "%NEW_MAILADRESS_VALUE%"  
echo.
echo --------------------------------------------------
echo.

:ALL_INPUT_QUESTION_WRONG_KEY
set /P YES_NO_QUESTION_VAR=Wollen Sie das Nutzerkonto jetzt anlegen? J/N : 
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))  

:ALL_INPUT_QUESTION_GO_ON
set YES_NO_QUESTION_VAR=
echo.


REM --- Abfrage ob der Vorlagen-Nutzer ein Home- und Profilverzeichnis hat ---

REM - Homeverzeichnis-
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -hmdir > %TEMPFILE_DIR%\%TPL_SAMID%_hmdir_Query_01.txt

for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_hmdir_Query_01.txt) do call :SET_NEW_QUERY_HMDIR_VAR %%i  
goto GO_ON_QUERY_HMDIR

:SET_NEW_QUERY_HMDIR_VAR
set NEW_QUERY_HMDIR_VAR=%NEW_QUERY_HMDIR_VAR%!%*
goto :EOF

:GO_ON_QUERY_HMDIR
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_HMDIR_VAR%") do @set NEW_QUERY_HMSRV_VAR=%%j  
for /f "tokens=1 delims=\" %%i in ("%NEW_QUERY_HMSRV_VAR%") do @set NEW_HMSRV=%%i  
set IF_NEW_HMSRV=yes
if "%NEW_HMSRV%"=="dsget succeeded" set IF_NEW_HMSRV=no  
if "%IF_NEW_HMSRV%"=="no" (set DSADD_PARAMETER_HMDIR= ) else (set DSADD_PARAMETER_HMDIR=-hmdir "\\%NEW_HMSRV%\%NEW_SAMID%$")  


REM - Profilverzeichnis-
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -profile > %TEMPFILE_DIR%\%TPL_SAMID%_Profile_Query_01.txt

for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Profile_Query_01.txt) do call :SET_NEW_QUERY_PROFILE_VAR %%i  
goto GO_ON_QUERY_PROFILE

:SET_NEW_QUERY_PROFILE_VAR
set NEW_QUERY_PROFILE_VAR=%NEW_QUERY_PROFILE_VAR%!%*
goto :EOF

:GO_ON_QUERY_PROFILE
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_PROFILE_VAR%") do @set NEW_QUERY_PROFILE_PATH=%%j  
for /f "tokens=1,2 delims=\" %%i in ("%NEW_QUERY_PROFILE_PATH%") do @set NEW_PROFILE_PATH=%%i\%%j  
set IF_NEW_PROFILE_PATH=yes
if "%NEW_PROFILE_PATH%"=="dsget succeeded\" set IF_NEW_PROFILE_PATH=no  
if "%IF_NEW_PROFILE_PATH%"=="no" (set DSADD_PARAMETER_PROFILE= ) else (set DSADD_PARAMETER_PROFILE=-profile "\\%NEW_PROFILE_PATH%\%NEW_SAMID%")  


REM --- Erstellen des Home- und Profilverzeichnisses sowie der Freigabe inklusive Freigabeberechtigungen ---

echo if "%IF_NEW_PROFILE_PATH%"=="yes" md \\%NEW_PROFILE_PATH%\%NEW_SAMID%  
echo if "%IF_NEW_HMSRV%"=="yes" md \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID%  
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:  

REM if "%IF_NEW_PROFILE_PATH%"=="yes" md \\%NEW_PROFILE_PATH%\%NEW_SAMID% 1>NUL 2>&1  
REM if "%IF_NEW_HMSRV%"=="yes" md \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% 1>NUL 2>&1  
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  


REM --- Abfragen um die Parameter des dsadd-Befehls zu fuellen ---

REM - User Principal Name -
set DSADD_PARAMETER_UPN=-upn %NEW_SAMID%@%DNS_DOMAINNAME%


REM - Vorname -
set DSADD_PARAMETER_FN=-fn "%NEW_FIRSTNAME%"  


REM - Nachname -
set DSADD_PARAMETER_LN=-ln "%NEW_LASTNAME%"  


REM - Anzeigename -
set DSADD_PARAMETER_DISPLAY=-display "%NEW_LASTNAME%, %NEW_FIRSTNAME%"  


REM - Passwort fuer die erste Anmeldung -
set DSADD_PARAMETER_PWD=-pwd %NEW_STDPWD%


REM - Distinguished Name -
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -dn > %TEMPFILE_DIR%\%TPL_SAMID%_dn_Query_01.txt
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_dn_Query_01.txt) do call :SET_NEW_QUERY_DN_VAR %%i  
goto GO_ON_QUERY_DN

:SET_NEW_QUERY_DN_VAR
set NEW_QUERY_DN_VAR_01=%NEW_QUERY_DN_VAR_01%!%*
goto :EOF

:GO_ON_QUERY_DN
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DN_VAR_01%") do @set NEW_QUERY_DN_VAR_02=%%j  
for /f "tokens=1,2,* delims==" %%i in ("%NEW_QUERY_DN_VAR_02%") do @set NEW_QUERY_DN_VAR_03=%%k  
set NEW_OBJECTPLACE=OU=%NEW_QUERY_DN_VAR_03%
set NEW_DISTNAME=CN=%NEW_LASTNAME%\, %NEW_FIRSTNAME%,%NEW_OBJECTPLACE%


REM - Beschreibung -
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -desc > %TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt

findstr "&" %TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt 1>NUL 2>&1  
if %ERRORLEVEL%==0 goto SECOND_WAY_QUERY_DESC

for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt) do call :SET_NEW_QUERY_DESC_VAR %%i  
goto GO_ON_QUERY_DESC

:SET_NEW_QUERY_DESC_VAR
set NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%*
goto :EOF

:GO_ON_QUERY_DESC
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j  
goto DONE_QUERY_DESC

:SECOND_WAY_QUERY_DESC
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_Description_Query_01.txt) do call :SECOND_WAY_SET_NEW_QUERY_DESC_VAR "%%i"  
goto SECOND_WAY_GO_ON_QUERY_DESC

:SECOND_WAY_SET_NEW_QUERY_DESC_VAR
set "NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%~1"  
goto :EOF

:SECOND_WAY_GO_ON_QUERY_DESC
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j  

:DEL_SPACE_BEGIN
if "%NEW_DESCRIPTION:~0,1%" neq " " goto DEL_SPACE_END  
set "NEW_DESCRIPTION=%NEW_DESCRIPTION:~1%"  
goto DEL_SPACE_BEGIN

:DEL_SPACE_END
if "%NEW_DESCRIPTION:~-1%" neq " " goto DONE_QUERY_DESC  
set "NEW_DESCRIPTION=%NEW_DESCRIPTION:~0,-1%"  
goto DEL_SPACE_END

:DONE_QUERY_DESC
set DSADD_PARAMETER_DESC=-desc "%NEW_DESCRIPTION%"  


REM - Gruppenmitgliedschaften -
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -memberof > %TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_01.txt
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  
goto GO_ON_QUERY_GROUPS

:SET_NEW_QUERY_GROUPS_VAR
set NEW_GROUPS=%NEW_GROUPS% %1
goto :EOF

:GO_ON_QUERY_GROUPS
if "%NEW_GROUPS:~0,1%" equ " " set "NEW_GROUPS=%NEW_GROUPS:~1%"  
set DSADD_PARAMETER_MEMBEROF=-memberof %NEW_GROUPS%


REM - Laufwerksbuchstabe fuer das Homeverzeichnis -
if "%IF_NEW_HMSRV%"=="no" (set DSADD_PARAMETER_HMDRV= ) else (set DSADD_PARAMETER_HMDRV=-hmdrv %NEW_HOME_DRV%)  


REM - LogonScript -
%PROGRAM_DIR%\dsquery user -samid %TPL_SAMID% | %PROGRAM_DIR%\dsget user -loscr > %TEMPFILE_DIR%\%TPL_SAMID%_LogonScript_Query_01.txt
for /f "delims=" %%i in (%TEMPFILE_DIR%\%TPL_SAMID%_LogonScript_Query_01.txt) do call :SET_NEW_QUERY_LOGONSCRIPT_VAR %%i  
goto GO_ON_QUERY_LOGONSCRIPT

:SET_NEW_QUERY_LOGONSCRIPT_VAR
set NEW_QUERY_LOGONSCRIPT_VAR=%NEW_QUERY_LOGONSCRIPT_VAR%!%*
goto :EOF

:GO_ON_QUERY_LOGONSCRIPT
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_LOGONSCRIPT_VAR%") do @set NEW_LOGONSCRIPT=%%j  
if "%NEW_LOGONSCRIPT%"=="dsget succeeded" (set IF_NEW_LOGONSCRIPT=no) else (set IF_NEW_LOGONSCRIPT=yes)  
if "%IF_NEW_LOGONSCRIPT%"=="no" (set DSADD_PARAMETER_LOSCR= ) else (set DSADD_PARAMETER_LOSCR=-loscr "%NEW_LOGONSCRIPT%")  


REM --- Erstellen des neuen Nutzers ---

REM - Flexibler Dsadd-Befehl -
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  
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  
if not %ERRORLEVEL%==0 goto DSADD_ERROR


REM - Beispiel fuer festen Dsadd-Befehl, nur zur Dokumentation-
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  


REM --- Vergeben der Rechte fuer das Profilverzeichnis ---

if "%IF_NEW_PROFILE_PATH%"=="no" goto NO_SET_CACLS_PROFILE_PATH  

REM set /A TRIALS=0 1>NUL 2>&1
REM set /A SLEEP_PARAMETER=0 1>NUL 2>&1

REM :SET_CACLS_PROFILE_PATH_BEGIN
REM if %TRIALS%==10 goto SET_CACLS_PROFILE_PATH_ERROR
REM .\Programs\sleep %SLEEP_PARAMETER%

REM set /A TRIALS=%TRIALS% + 1 1>NUL 2>&1
REM set /A SLEEP_PARAMETER=%SLEEP_PARAMETER% + 5 1>NUL 2>&1

echo cacls.exe \\%NEW_PROFILE_PATH%\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C /R "Domain Users"  
REM cacls.exe \\%NEW_PROFILE_PATH%\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C /R "Domain Users" 1>NUL 2>&1  
REM if %ERRORLEVEL%==0 (goto SET_CACLS_PROFILE_PATH_GO_ON) else (goto SET_CACLS_PROFILE_PATH_BEGIN)

REM :SET_CACLS_PROFILE_PATH_GO_ON
REM set IF_CACLS_PROFILE_PATH=yes
REM goto SET_CACLS_PROFILE_PATH_END

REM :SET_CACLS_PROFILE_PATH_ERROR
REM set IF_CACLS_PROFILE_PATH=no
REM echo.
REM echo Es gab Probleme beim Setzen der Berechtigungen des Profilverzeichnisses.
REM echo Bitte pruefen Sie die Log-Datei.
REM echo --------------------------------------------------
REM goto SET_CACLS_PROFILE_PATH_END

REM :SET_CACLS_PROFILE_PATH_END
REM set TRIALS=
REM set SLEEP_PARAMETER=

:NO_SET_CACLS_PROFILE_PATH


REM --- Vergeben der Rechte fuer das Homeverzeichnis ---

if "%IF_NEW_HMSRV%"=="no" goto NO_SET_CACLS_HOMEDIR  

REM set /A TRIALS=0 1>NUL 2>&1
REM set /A SLEEP_PARAMETER=0 1>NUL 2>&1

REM :SET_CACLS_HOMEDIR_BEGIN
REM if %TRIALS%==10 goto SET_CACLS_HOMEDIR_ERROR
REM .\Programs\sleep %SLEEP_PARAMETER%

REM set /A TRIALS=%TRIALS% + 1 1>NUL 2>&1
REM set /A SLEEP_PARAMETER=%SLEEP_PARAMETER% + 5 1>NUL 2>&1

echo cacls.exe \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C
REM cacls.exe \\%NEW_HMSRV%\d$\Data\Users\%NEW_SAMID% /T /E /G %NEW_SAMID%@%DNS_DOMAINNAME%:C 1>NUL 2>&1
REM if %ERRORLEVEL%==0 (goto SET_CACLS_HOMEDIR_GO_ON) else (goto SET_CACLS_HOMEDIR_BEGIN)

REM :SET_CACLS_HOMEDIR_GO_ON
REM set IF_CACLS_HOMEDIR=yes
REM goto SET_CACLS_HOMEDIR_END

REM :SET_CACLS_HOMEDIR_ERROR
REM set IF_CACLS_HOMEDIR=no
REM echo.
REM echo Es gab Probleme beim Setzen der Berechtigungen des Homeverzeichnisses.
REM echo Bitte pruefen Sie die Log-Datei.
REM echo --------------------------------------------------
REM goto SET_CACLS_HOMEDIR_END

REM :SET_CACLS_HOMEDIR_END
REM set TRIALS=
REM set SLEEP_PARAMETER=

:NO_SET_CACLS_HOMEDIR


REM --- Weitere Konfigurationen ---

BEISPIEL


REM --- Erstellen der Textdatei fuer das Antragsformular ---

REM -Abfrage nach den Gruppen-

for /f "delims=," %%a in (%TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_01.txt) do @echo %%a>> %TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_Form.txt  

for /f "tokens=2 delims==" %%a in (%TEMPFILE_DIR%\%TPL_SAMID%_Groups_Query_Form.txt) do call :SET_NEW_QUERY_GROUPS_FORM_VAR "%%a"  
goto GO_ON_QUERY_GROUPS_FORM

:SET_NEW_QUERY_GROUPS_FORM_VAR
set NEW_GROUPS_FORM=%NEW_GROUPS_FORM% %1,
goto :EOF

:GO_ON_QUERY_GROUPS_FORM
if "%NEW_GROUPS_FORM:~0,1%" equ " " set "NEW_GROUPS_FORM=%NEW_GROUPS_FORM:~1%"  
set NEW_GROUPS_FORM=%NEW_GROUPS_FORM:~0,-1%


echo FormIntention=%FORM_INTENTION%>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo UserID=%NEW_SAMID%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo UserNameRev=%NEW_LASTNAME%, %NEW_FIRSTNAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo Department=%FORM_DEPARTMENT%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo ValidDate=%FORM_VALID_DATE%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo Motivation=%FORM_MOTIVATION%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo UserType=%FORM_USER_TYPE%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo ChiefName=%FORM_CHIEF_NAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo UserName=%NEW_FIRSTNAME% %NEW_LASTNAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo Groups=%NEW_GROUPS_FORM%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%
echo AdministratorName=%ADMIN_LASTNAME%, %ADMIN_FIRSTNAME%>>%TEMPFILE_DIR%\%FORM_FILL_FILE_NAME%


REM --- Aufruf des Antragsformulars ---

if exist %WINWORD_PATH%\%WINWORD_FILE_NAME% (goto CREATE_ACCOUNT_FORM_GO_ON) else (goto WINWORD_FIND_ERROR)

:CREATE_ACCOUNT_FORM_GO_ON
copy /Y "%FORMFILE_DIR%\%FORMFILE_NAME%" "%LOGFILE_DIR%\%NEW_LASTNAME%_%NEW_FIRSTNAME%_%NEW_SAMID%_Create_Account_from_Template.doc" 1>NUL 2>&1  
start %WINWORD_PATH%\%WINWORD_FILE_NAME% %LOGFILE_DIR%\%NEW_LASTNAME%_%NEW_FIRSTNAME%_%NEW_SAMID%_Create_Account_from_Template.doc /MFilltheFields
goto CREATE_ACCOUNT_FORM_END

:WINWORD_FIND_ERROR
echo.
echo --------------------------------------------------
echo.
echo Fehler beim Oeffnen des Antragsformulars.
echo Es ist kein Word-Programm installiert, bzw. das Word-Programm kann nicht gefunden werden.
echo.
echo --------------------------------------------------
goto CREATE_ACCOUNT_FORM_END

:CREATE_ACCOUNT_FORM_END


REM --- Ausgabe einer Log-Datei was mit welchen Werten angelegt wurde ---

set CREATE_ACC_FROM_COPY_LOGFILE=%LOGFILE_DIR%\%NEW_LASTNAME%_%NEW_FIRSTNAME%_%NEW_SAMID%_Create_Account_from_Copy.log

echo.>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo ----- Log-Datei ueber die Anlage eines neuen Nutzerkontos auf Basis einer Vorlage ----->>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Erstellt von %ADMIN_FIRSTNAME% %ADMIN_LASTNAME% (Kennung: %USERNAME%) am %DATE%, um %TIME% Uhr.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Der Befehl zur Erstellung des Nutzers lautet:>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
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%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo --- Information zur Nutzervorlage --->>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Nachname: "%TPL_LASTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Vorname: "%TPL_FIRSTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Kennung: "%TPL_SAMID%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
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%")  
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%")  
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%")  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo --- Information zum neuen Nutzer --->>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Nachname: "%NEW_LASTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Vorname: "%NEW_FIRSTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Kennung: "%NEW_SAMID%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Distinguished Name: "%NEW_DISTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo User Principal Name: "%NEW_SAMID%@%DNS_DOMAINNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Anzeigename: "%NEW_LASTNAME%, %NEW_FIRSTNAME%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Beschreibung: "%NEW_DESCRIPTION%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Der Nutzer ist Mitglied in folgenden Gruppen:>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo %NEW_GROUPS%>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Mailadresse: "%NEW_MAILADRESS_VALUE%">>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
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%")  
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%")  
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%")  
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%")  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Es wurde ein Passwort zur Erstanmeldung vergeben.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Der Nutzer muss das Passwort bei der Erstanmeldung aendern.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Das Konto wurde deaktiviert.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo !!! WICHTIG !!!>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo --- Manuell notwendige Anpassungen:  --->>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
if "%IF_CACLS_PROFILE_PATH%"=="no" echo Pruefen Sie die Berechtigungen auf dem Profilverzeichnis.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
if "%IF_CACLS_HOMEDIR%"=="no" echo Pruefen Sie die Berechtigungen auf dem Homeverzeichnis.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Weitere notwendige Gruppen weisen Sie dem Nutzerkonto bitte manuell zu.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo Einen anderen Standort im Active Directory weisen Sie dem Nutzerkonto bitte manuell zu.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo !!! WICHTIG !!!>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_LOGFILE%"  
echo ----- Ende ----->>"%CREATE_ACC_FROM_COPY_LOGFILE%"  

goto NO_ERRORS

REM --- Abbrueche durch fehlerhafte Eingaben ---

REM -Abbruch nach der Frage ob die Eingaben korrekt sind-
:ALL_INPUT_QUESTION_STOP
goto BREAK_PROGRAM


REM -Fehler beim Dsadd-Befehl-
:DSADD_ERROR

set CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE=%LOGFILE_DIR%\%NEW_SAMID%_Create_Account_from_Copy_Dsadd_Error.log

echo.>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo ----- Log-Datei fuer Dsadd-Error ----->>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo Erstellt am %DATE%, um %TIME% Uhr.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo Der Befehl zur Erstellung des Nutzers lautet:>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
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%"  
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo Die Fehlermeldung beim Befehl zur Erstellung des Nutzers lautet:>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
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%"  
echo.>>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  
echo ----- Ende ----->>"%CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE%"  

echo --------------------------------------------------
echo.
echo Es gab ein Problem beim Dsadd-Befehl.
echo Home- und Profilverzeichnisse koennten erstellt worden sein.
echo.
echo --------------------------------------------------
goto BREAK_PROGRAM


REM -Falsche Kennung des neuen Nutzers-
:NEW_USER_SAMID_ERROR
echo.
echo Ein Nutzerkonto mit der Kennung "%NEW_SAMID%" existiert bereits.  

:NEW_USER_SAMID_ERROR_WRONG_KEY
set /P YES_NO_QUESTION_VAR=Wollen Sie eine andere Kennung eingeben? J/N : 
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))  

:NEW_USER_SAMID_ERROR_GO_ON
set NEW_SAMID=
set YES_NO_QUESTION_VAR=
goto NEW_USER_SAMID_INPUT

:NEW_USER_SAMID_ERROR_STOP
goto BREAK_PROGRAM


REM -Falsche Kennung des alten Nutzers-
:TPL_USER_SAMID_ERROR
echo.
echo Ein Nutzerkonto mit der Kennung "%TPL_SAMID%" existiert nicht.  

:TPL_USER_SAMID_ERROR_WRONG_KEY
set /P YES_NO_QUESTION_VAR=Wollen Sie eine andere Kennung eingeben? J/N : 
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))  

:TPL_USER_SAMID_ERROR_GO_ON
set TPL_SAMID=
set YES_NO_QUESTION_VAR=
goto TPL_USER_SAMID_INPUT

:TPL_USER_SAMID_ERROR_STOP
goto BREAK_PROGRAM


:BREAK_PROGRAM
echo --------------------------------------------------
echo.
echo Das Programm wird abgebrochen.
echo Es wurde kein neues Nutzerkonto angelegt.
echo.
echo --------------------------------------------------
goto CLEAR_SCRIPTWORK


:NO_ERRORS
echo --------------------------------------------------
echo.
echo Das Nutzerkonto wurde erstellt.
:NEW_SEE_LOGFILE_ERROR_WRONG_KEY
set /P YES_NO_QUESTION_VAR=Wollen Sie die Log-Datei sehen? J/N : 
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))  
set YES_NO_QUESTION_VAR=
echo.
echo --------------------------------------------------
echo.
:NEW_NEXT_ACCOUNT_ERROR_WRONG_KEY
set /P YES_NO_QUESTION_VAR=Wollen Sie ein weiteres Nutzerkonto erstellen? J/N : 
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))  
set YES_NO_QUESTION_VAR=
echo.
echo --------------------------------------------------


:CLEAR_SCRIPTWORK
%PROGRAM_DIR%\sleep 2
REM --- Temporaere Dateien loeschen ---

del %TEMPFILE_DIR%\%FORM_FILL_FILE_NAME% 1>NUL 2>&1
del %TEMPFILE_DIR%\%TPL_SAMID%_*.txt 1>NUL 2>&1
del %TEMPFILE_DIR%\%USERNAME%_*.txt 1>NUL 2>&1


REM ------------------ Variable loeschen ------------------

set ADMIN_FIRSTNAME=
set ADMIN_LASTNAME=
set CREATE_ACC_FROM_COPY_LOGFILE=
set CREATE_ACC_FROM_COPY_DSADD_ERROR_LOGFILE=
set DOMAINNAME=
set DNS_DOMAINNAME=
set DSADD_PARAMETER_UPN=
set DSADD_PARAMETER_FN=
set DSADD_PARAMETER_LN=
set DSADD_PARAMETER_DISPLAY=
set DSADD_PARAMETER_PWD=
set DSADD_PARAMETER_DESC=
set DSADD_PARAMETER_MEMBEROF=
set DSADD_PARAMETER_EMAIL=
set DSADD_PARAMETER_HMDIR=
set DSADD_PARAMETER_HMDRV=
set DSADD_PARAMETER_PROFILE=
set DSADD_PARAMETER_LOSCR=
set FORM_CHIEF_NAME=
set FORM_DEPARTMENT=
set FORM_INTENTION=
set FORM_MOTIVATION=
set FORM_USER_TYPE=
set FORM_VALID_DATE=
set FORMFILE_DIR=
set FORMFILE_NAME=
set FORM_FILL_FILE_NAME=
set IF_CACLS_HOMEDIR=
set IF_CACLS_PROFILE_PATH=
set IF_NEW_HMSRV=
set IF_NEW_LOGONSCRIPT=
set IF_NEW_PROFILE_PATH=
set LOGFILE_DIR=
set MAIL_SUFFIX=
set NEW_DESCRIPTION=
set NEW_DISTNAME=
set NEW_FIRSTNAME=
set NEW_GROUPS=
set NEW_GROUPS_FORM=
set NEW_HOME_DRV=
set NEW_HMSRV=
set NEW_LASTNAME=
set NEW_LOGONSCRIPT=
set NEW_MAILADRESS_VALUE=
set NEW_OBJECTPLACE=
set NEW_QUERY_DESC_VAR=
set NEW_QUERY_DN_VAR_01=
set NEW_QUERY_DN_VAR_02=
set NEW_QUERY_DN_VAR_03=
set NEW_QUERY_HMDIR_VAR=
set NEW_QUERY_HMSRV_VAR=
set NEW_QUERY_LOGONSCRIPT_VAR=
set NEW_QUERY_PROFILE_PATH=
set NEW_QUERY_PROFILE_VAR=
set NEW_PROFILE_PATH=
set NEW_SAMID=
set NEW_STDPWD=
set PROGRAM_DIR=
set TEMPFILE_DIR=
set TPL_FIRSTNAME=
set TPL_LASTNAME=
set TPL_QUERY_ADMIN_FIRSTNAME_VAR=
set TPL_QUERY_ADMIN_LASTNAME_VAR=
set TPL_QUERY_FIRSTNAME_VAR=
set TPL_QUERY_LASTNAME_VAR=
set TPL_SAMID=
set WINWORD_FILE_NAME=
set WINWORD_PATH=
set YES_NO_QUESTION_VAR=

if "%IF_NEW_NEXT_ACCOUNT%"=="yes" (goto BEGIN_OF_SCRIPT) else (goto END_OF_SCRIPT)  

:END_OF_SCRIPT
set IF_NEW_NEXT_ACCOUNT=
REM exit

Content-ID: 115966

Url: https://administrator.de/tutorial/nutzerkonten-auf-basis-einer-vorlage-in-windowsdomaenen-anlegen-115966.html

Ausgedruckt am: 23.12.2024 um 05:12 Uhr