scripts-win/new_user/create_users.cmd
2021-11-26 22:01:09 +01:00

111 lines
No EOL
2.8 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
REM Attention encodage OEM-850
setlocal enableextensions enabledelayedexpansion
:checkadmin
REM Check excution du script en tant qu'admin
net session > NUL 2>&1
if %errorlevel% EQU 0 goto start
echo LE SCRIPT N'EST PAS LANC<4E> EN TANT QU'ADMINISTRATEUR !
pause > nul
exit
:start
REM Check si la liste d'users existe
cls
if not exist %~dp0\users_to_create.txt (
echo Le fichier users_to_create.txt n'existe pas.
echo Veuillez le crer, avec un utilisateur par ligne sous cette forme :
echo prenom.nom;Prnom NOM
echo.
echo ATTENTION le fichier doit ˆtre encod en OEM-850
pause > nul
exit
)
rem Comptage du nombre de lignes, et donc d'users
set /a lines=0
for /f "delims=;" %%L in ('type %~dp0\users_to_create.txt') do (set /a lines+=1)
REM Pour chaque ligne, crer un user avec son username, et son fullname
REM incrmentation du compteur pour donner une progression
REM dfinition des quotas
REM /!\ Le modŠle demand par la commande doit exister au pralable /!\
set /a count=0
for /F "delims=; tokens=1,2" %%A in ('type %~dp0\users_to_create.txt') do (
set user=%%A
set fname=%%B
set user=!user:~0,20!
call :create >> %~dp0\new_users.log
set /a count+=1
cls
if !count! EQU 1 echo !count!/%lines% utilisateur cr.
if !count! GTR 1 echo !count!/%lines% utilisateurs crs.
)
REM Fin du script
title Cration des utilisateurs termine.
pause > nul
exit
:create
title Cration de l'utilisateur %user% - %fname%
REM check existence user, si oui, vrifier existence dossier perso
set exists=0
net user !user! > NUL 2>&1
if %errorlevel% EQU 0 (
set exists=1
goto perso
)
call :pass
net user !user! !password! /add /DOMAIN /FULLNAME:"!fname!"
:perso
REM check si dossier perso existe, si oui dfinir quota
if exist %~dp0\Perso\!user! goto quota
echo Cration du dossier ...
mkdir %~dp0\Perso\!user!
echo.
echo Dfinition du propritaire ...
icacls %~dp0\Perso\!user! /setowner !user! /T
echo.
echo Dsactivation de l'hritage ...
icacls %~dp0\Perso\!user! /inheritance:d
echo.
echo Modification des droits ...
icacls %~dp0\Perso\!user! /grant !user!:(OI)(CI)(NP)(F)
icacls %~dp0\Perso\!user! /grant "Administrateurs":(OI)(CI)(F)
icacls %~dp0\Perso\!user! /remove "Tout le monde"
icacls %~dp0\Perso\!user! /remove "Utilisateurs authentifis"
echo.
:quota
echo Dfinition du quota...
dirquota quota add /Path:E:\Perso\!user! /SourceTemplate:"Perso 10 Go"
if %exists% EQU 1 goto :EOF
echo !user! !password!>>%~dp0\users_created.txt
goto :EOF
:pass
REM set /P _length=Password Length: %==%
set _length=8
set /a z = %_length%
set "string=ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz123456789"
set "password="
for /L %%i in (1,1,!z!) do call :_genRand
REM echo Password is: %password%
goto :EOF
:_genRand
set /a x=%random% %% 62
set password=%password%!string:~%x%,1!
goto :eof