Dieses Script legt in einer Domäne einen Benutzer an, erstellt sein HomeDirectory, einen Profilordner und setzt die Berechtigungen.

 

@echo off
rem ******************************************************************
rem *** USERANLEGEN.cmd                                            ***
rem ***                                                            ***
rem *** Legt in der Domäne einen User an                           ***
rem ***   erstellt ein Homedirectory                               ***
rem ***   und einen Ordner für das Profil                          ***
rem ******************************************************************
rem *** Benötigte Hilfsprogramme (im Unterordner .\bin)            ***
rem ***    sleep.exe   (Support Tools)                             ***
rem ***    rmtshare.exe(ResKit)                                    ***
rem ***    xcacls      (Resource Kit)                              ***
rem ***    ldifde      (Server2003)
rem ******************************************************************
rem *** Verfasser: Jürgen Etterer (DIGITAL LABS.)                  ***
rem ***                                                            ***
rem ******************************************************************
setlocal

call :GETUSERDATA

set HOMESERVER=myhomeserver
set PROFSERVER=myprofileserver
set DOMAIN=mydomain
set FQDN1=mydomain
set FQDN2=de
set BaseDN="CN=Users,DC=%FQDN1%,DC=%FQDN2%"
set DEFAULTPASSWORD=passwort
set HOMEPATH=\\%HOMESERVER%\D$\Homedirs
set PROFPATH=\\%PROFSERVER%\Profiles$
set FILERIGHTS=Administratoren:F SYSTEM:F %DOMAIN%\%USERLOGIN%:C
set PROFRIGHTS=Administratoren:F SYSTEM:F %DOMAIN%\%USERLOGIN%:F
set SHARERIGHTS=/GRANT Administratoren:F /GRANT %DOMAIN%\%USERLOGIN%:C
set LOGONSCRIPT=logon.cmd
set WAITTIME=5

call :GENERATELDF
goto :EOF

echo Der User "%USERLOGIN%" wird mit den folgenden Daten angelegt:
echo.
echo Voller Name: %FULLNAME%
echo HOMEDIR       : %HOMEPATH%\%USERLOGIN%
echo Berechtigungen: %FILERIGHTS%
echo.
echo HOMESHARE     : \\%HOMESERVER%\%USERLOGIN%$
echo Berechtigungen: %SHARERIGHTS%
echo.
echo PROFIL        : %PROFPATH%\%USERLOGIN%
echo Berechtigungen: %PROFRIGHTS%
echo.
pause
call :USERANLEGEN

echo **********************************************************
echo Zur Kontrolle werden die Benutzerdaten nochmals angezeigt:
net user %USERLOGIN% /DOMAIN
pause
echo.
echo *******************************************************************************
echo Jetzt muss nur noch in der MMC unter 'Account' der AD-Username angegeben werden
echo und unter 'Profile' das Netzlaufwerk des Users zugewiesen werden.
echo *******************************************************************************
echo.

endlocal
goto :EOF

rem *** Hier werden die Benutzerdaten abgefragt ********************************************************
:GETUSERDATA
set /p USERLOGIN="Loginname: "
set /p VORNAME="Vorname  : "
set /p NACHNAME="Nachname : "
set FULLNAME="%VORNAME% %NACHNAME%"
goto :EOF

rem ****************************************************************************************************
:USERANLEGEN
rem *** Zuerst legen wir das Homedir des Users an....
echo *** Checken wir mal, ob es den User bereits gibt
net user %USERLOGIN% /DOMAIN > nul
if %ERRORLEVEL%==0 set ERROR=USEXISTS
if .%ERROR%==.USEXISTS goto :EOF

call :HOMEDIRANLEGEN
call :PROFILANLEGEN

call :CREATEUSER

call :PROFILERIGHTS

call :HOMEDIRRIGHTS
call :HOMEDIRSHARE

goto :EOF

rem *** Hier wird das Homedir des Users angelegt **********************************************************
:HOMEDIRANLEGEN
echo Das Homedirectory %HOMEPATH%\%USERLOGIN% wird angelegt ...
if exist %HOMEPATH%\%USERLOGIN% echo FEHLER: Das Verzeichnis existiert bereits! & set ERROR=HDEXISTS & goto :EOF
md %HOMEPATH%\%USERLOGIN%
goto :EOF


rem *** Hier werden die Rechte auf das Homedir des Users gesetzt *********************************************
:HOMEDIRRIGHTS
echo Berechtigungen auf das Homedir werden gesetzt...
.\bin\xcacls.exe %HOMEPATH%\%USERLOGIN% /T /G %FILERIGHTS% /Y > nul
goto :EOF

rem *** Freigabe des Homedirectories *************************************************************************
:HOMEDIRSHARE
echo Die Freigabe des Homedirs wird erzeugt...
.\bin\RMTSHARE.EXE \\%HOMESERVER%\%USERLOGIN%$=D:\Homedirs\%USERLOGIN% %SHARERIGHTS% /UNLIMITED> %TEMP%\makeshare.tmp
findstr /C:"The command failed:" %TEMP%\makeshare.tmp
if %ERRORLEVEL%==0 call :SHAREERROR
if exist %TEMP%\makeshare.tmp del %TEMP%\makeshare.tmp
goto :EOF

rem ****************************************************************************************************
:SHAREERROR
set ERROR=GENSHARE
for /f "tokens=4 delims=: " %%i in (%TEMP%\makeshare.tmp) do set SHERROR=%%i
if %SHERROR%==2118 (
   echo FEHLER: Die angegebene Freigabe "%USERLOGIN%$" existiert bereits!
)
if %SHERROR%==1332 (
   echo Fehler in der Userliste: Benutzer nicht gefunden!
   echo Aus Sicherheitsgruenden wird die Freigabe "%USERLOGIN%$" wieder entfernt...
   .\bin\rmtshare \\%HOMESERVER%\%USERLOGIN%$ /delete
)
goto :EOF

rem *** Anlegen des Profilordners **********************************************************************
:PROFILANLEGEN
echo Das Profil %PROFPATH%\%USERLOGIN% wird angelegt ...
if exist %PROFPATH%\%USERLOGIN% echo FEHLER: Das Verzeichnis existiert bereits! & set ERROR=PREXISTS & goto :EOF
md %PROFPATH%\%USERLOGIN%
goto :EOF

rem *** Setzen der Berechtigungen auf das Profil *******************************************************
:PROFILERIGHTS
echo Berechtigungen auf das Profil werden gesetzt...
.\bin\xcacls.exe %PROFPATH%\%USERLOGIN% /T /G %PROFRIGHTS% /Y > nul
goto :EOF

rem *** Anlegen des Users ******************************************************************************
:CREATEUSER
net user %USERLOGIN% %DEFAULTPASSWORD% /ADD /fullname:%FULLNAME% /homedir:\\%HOMESERVER%\%USERLOGIN%$ /profilepath:%PROFPATH%\%USERLOGIN% /scriptpath:%LOGONSCRIPT% /expires:never /DOMAIN
echo Nun wird %WAITTIME% Sekunden gewartet...
sleep %WAITTIME%
goto :EOF

rem *** Generate LDF
:GENERATELDF
echo dn: %BaseDN%
echo changetype: add
echo objectClass: top
echo objectClass: person
echo objectClass: organizationalPerson
echo objectClass: user
echo sn: %VORNAME%
echo givenName: %NACHNAME%
echo displayName: %NACHNAME% %VORNAME%
echo homeDirectory: \\%HOMESERVER%\%USERLOGIN%$
echo homeDrive: Y:
echo scriptPath: logon.cmd
echo profilePath: %PROFPATH%\%USERLOGIN%
echo accountExpires: 9223372036854775807
echo sAMAccountName: %USERLOGIN%
echo userPrincipalName: testuser@%FQDN1%.%FQDN2%
goto :EOF