Création d’Utilisateur(s) : exemple de scripts BATCH DOS (Local=net user / Domain AD=dsadd)

Création d’Utilisateur(s) : exemple de scripts BATCH DOS (Local=net user / Domain AD=dsadd)

Introduction

Sous Windows, il existe plusieurs solutions pour gérer,créer,modifier un ou des utilisateurs.

La plus connus est sûrement l’option « Comptes Utilisateurs » du panneau de configuration, mais celle-ci est aussi la plus limitée sur les différentes options et paramètres du compte.

Comptes Utilisateurs

Il est possible de gérer les utilisateurs (création, suppression, modification) via une console de gestion Microsoft (clic droit sur l’icône ordinateur puis gérer)  qui offrent déjà plus d’options ou son équivalent direct lusrmgr.msc.

Console Utilisateurs & Groupes

Malheureusement, ces outils ne sont disponibles que sur les éditions professionnelles de Windows.

Heureusement, la ligne de commande peut nous aider à régler ces limitations à l’aide la commande NET et ses compléments ACCOUNTS, LOCALGROUP, et surtout USER.

Voici donc la commande net user de gestion des utilisateurs pour la ligne de commande que nous avons étudié a l’aide d’un script batch de création dynamique d’utilisateur.
net user

Voici un petit listing simple d’un script batch qui demande les différentes informations de l’utilisateur à créer et définit les différentes variables pour créer l’utilisateur en ligne de commande.
!!! Attention, le script ne crée pas automatiquement les dossiers utilisés !!!

Voici une petite explication du fonctionnement du script :

REM Prise de Renseignements Utilisateur à créer & REM Définition des Variables

On commence par demander les informations concernant l’utilisateur à créer :

Prénom, Nom, Commentaires, Mot de passe, l’utilisateur peut changer son mot de passe, profil activé ou désactivé, ainsi que si l’on souhaite appliquer des restrictions d’horaires (utile pour des comptes utilisateurs enfants ou de personnes qui ne doivent pas accéder en dehors de certaines plages horaires …)

On définit ensuite à l’aide de ces saisies les différentes variables qui serviront à la création de l’utilisateur :

%NC% = Nom Complet de l’utilisateur
%USER% = nom d’utilisateur en fait prenom.nom
%PROF% = chemin du dossier du profil utilisateur une partie fixe %PROFILS% définit en début de script, puis la partie variable %USER%
%HD% = chemin du dossier HOME (chemin par défaut d’une fenêtre « Enregistrer sous »), composé de chemin de base %BASE% définit en début de script, puis de la partie %USER%

REM Affichage des informations pour Vérification

On affiche ensuite toutes les informations renseignées et créer afin de vérifier qu’il n’y pas d’erreurs de saisies ou de création, car la commande ne vérifie pas la validité des infos transmises, et on risque de se retrouver avec un utilisateur qui ne correspond pas à ce que l’on désirait.
On demande confirmation de la justesse des infos.

REM Création Utilisateur

Si tout est confirmé, on crée l’utilisateur avec la commande net user avec les paramètres suivants :
/add : ajoute l’utilisateur avec le nom d’utilisateur et mot de passe définit juste avant ce paramètre

/fullname : définit le nom complet de l’utilisateur
/comment : ajoute le commentaire utilisateur
/active : spécifie l’activation du compte ou non
/passwordchg : spécifie que l’utilisateur peut modifier son mot de passe
/homedir : répertoire de base
/profilepath : répertoire de stockage du profil utilisateur
/times : applique des restrictions d’horaires si définis

On veut que cet utilisateur fasse partie du groupe Invités, et l’on définit ceci avec la commande net localgroup /add.
La commande net localgroup /delete va supprimé ce même utilisateur du groupe « Utilisateurs », qui est le groupe par défaut lors de la création d’un utilisateur et qui serait en contradiction avec l’appartenance au groupe limité « Invités ».

Un petit message de confirmation comme quoi le script est terminé et on demande si l’on veut encore créer un utilisateur.
Dans ce cas on recommence le script, sinon on s’arrête là.

Le SCRIPT en mode local : net user

@ECHO OFF
REM Chemins de base pour les profils et Répertoire Utilisateurs
REM Modifiez ces Variables si vous souhaitez les stockés ailleurs
SET PROFILS=C:\Users
SET BASE=C:\Users

REM Prise de Renseignements Utilisateur à créer

:BEG
CLS
ECHO *******************************
ECHO **     Infos Utilisateur     **
ECHO *******************************
ECHO(
SET /P PRE=Entrez le Pr‚nom : 
SET /P NOM=Entrez le Nom : 
SET /P COM=Commentaire : 
SET /P MDP=Mot de passe : 
CHOICE /N /M "L'utilisateur pourra t'il changer son mot de passe ? (o/n)"
FOR /F "tokens=%ERRORLEVEL%" %%P IN ("YES NO") DO SET CHPWD=%%P
CHOICE /N /M "Activer le compte ? (o/n)"
FOR /F "tokens=%ERRORLEVEL%" %%A IN ("YES NO") DO SET ACT=%%A
CHOICE /N /M "Souhaitez vous restreindre l'acc‚s sur des cr‚neaux horaires ? (o/n)"
IF %ERRORLEVEL%==2 (
SET TIMES=ALL
) ELSE (
ECHO(
ECHO Entrez les restrictions comme suivant :
ECHO Jour=M T W Th F Sa Su
ECHO Heure=heures entiere avec séparation 1h entiere
ECHO JourDebut-JourFin,Heure:Debut-Heure:Fin
ECHO Jour1,Heure:Debut-Heure:Fin;Jour2,Heure:Debut-Heure:Fin;...
ECHO(
SET /P TIMES=Restrictions : 
)

REM Définition des Variables

SET NC=%PRE% %NOM%
SET USER=%PRE%.%NOM%
SET PROF=%PROFILS%\%USER%
SET HD=%BASE%\%USER%

REM Affichage des informations pour Vérification

CLS
ECHO *******************************************
ECHO **   Confirmation Cr‚ation Utilisateur   **
ECHO *******************************************
ECHO(
ECHO Nom Complet :        %NC%
ECHO Utilisateur :        %USER%
ECHO Mot de passe :        %MDP%
ECHO Peut changer PWD :    %CHPWD%
ECHO Commentaires :        %COM%
ECHO Compte actif :        %ACT%
ECHO Chemin Profil :        %PROF%
ECHO Dossier de base :    %HD%
ECHO Restrictions :        %TIMES%
ECHO(
CHOICE /C ONA /N /M "Informations Correctes ? (O)ui (N)on (A)nnuler : "
IF %ERRORLEVEL%==2 GOTO BEG
IF %ERRORLEVEL%==3 GOTO END
REM Création Utilisateur

net user %USER% %MDP% /add /fullname:"%NC%" /comment:"%COM%" /active:%ACT% /passworchg:%CHPWD% /homedir:"%HD%" /profilepath:"%PROF%" /times:%TIMES%
net localgroup Invit‚s %USER% /add
net localgroup Utilisateurs %USER% /delete
CLS
ECHO ***** Cr‚ation de %NC% : OK *****
ECHO(
CHOICE /N /M "Voulez vous cr‚er un autre utilisateur ? (O)ui/(N)on : "
IF %ERRORLEVEL%==1 GOTO BEG
:END

Le SCRIPT en mode Active Directory avec création dans un domaine :
dsadd user, dsmod, dsget, dsquery, ICACLS

Ce script a été effectué dans le cadre d’un TP d’apprentissage de Active Directory sur Windows Server 2008R2.
Nous avions des Unités d’Organisation imposés et un domaine à respecter. Si vous souhaitez utilisez ce script, vous devez modifiez certaines valeures afin qu’elles correspondent à votre Active Directory.

La variable PDC correspond au nom du serveur de control de domaine principal (Principal Domain Controler).
La variable PWD correspond au mot de passe par défaut de l’utilisateur qui devra changer son mot de passe lors de la 1° connection.

Si l’utilisateur créé avait comme service affecté Boutique ou Compta, son profil devait être itinérant dans un dossier partagé « Profils$ » sur le serveur. Les autres services avaient un profil local.
Tous les utilisateurs possédaient un HomeDirectory à leur nom dans un dossier partagé « Documents » sur le serveur.

Une particularité à été demandé de créer un fichier .log des infos de création de l’utilisateur avec en plus le nom de l’utilisateur, de la machine et du script qui ont été utilisé pour créer cet utilisateur. Ce fichier « log » devait être stocké sur un dossier partagé caché du serveur : « log$\Utilisateurs ».
Je suis allé un peu plus loin en donnant le chemin complet du script utilisé, et en ajoutant un numéro de version au script. De plus, plusieurs commandes complexe de création d’utilisateurs, de création de dossiers, de modification de droits sur ces dossiers, pouvant se dérouler avec des erreurs, il m’a semblé judicieux de récupérer la sortie standard (résultats) de la commande, mais aussi la sortie des erreurs afin de retrouver plus facilement le problème, et de les intégrer dans une section dédié du fichier .log.

La redirection des sorties m’a été bien utile dans ce cas : commande 1>>fichier.log 2>>&1

Une problématique assez importante s’est posé lors des tests de ce script. En effet le script crée des dossiers sur les partages du serveur (Profils, Documents, et fichier log), pour autant les droits d’accès ne correspondaient pas au désir final.
Le fichier log créer ne devait pas être modifiable par les utilisateurs, les dossiers utilisateurs devaient être accessibles au nouvel utilisateur créer par le script, et non pas à l’utilisateur qui à utiliser le script ou à tous les autres utilisateurs.
La commande ICACLS fût bien utile, mais il a fallu bien réfléchir à quel moment la faire intervenir dans le script.


REM ******************************************
REM ***** Script de création utilisateur *****
REM *****        Active Directory        *****
REM *****   (C)07/2015 Dimitri VILMAIN   *****
REM ******************************************
REM ---------------------------------------------------
@ECHO OFF
TITLE Script Creation Utilisateur Active Directory
SET VER=1.10
SET DOM=%USERDNSDOMAIN%
SET PDC=PDC-DIM.%DOM%
SET PWD=P@ssw0rd

:BEG
CLS
ECHO *******************************************
ECHO *** Cr‚ation dynamique d'un utilisateur ***
ECHO ***                                     ***
ECHO ***          Version : %VER%            ***
ECHO *******************************************
ECHO(
SET /P LN=Nom de l'utilisateur : 
SET /P FN=Pr‚nom de l'utilisateur : 
SET /P TEL=T‚l‚phone personnel : 
SET USER=%FN%.%LN%
SET MAIL=%USER%@%DOM%
REM ========================= Vérification que l'utilisateur n'existe pas déjà =========================
DSQUERY user -name "%USER%" | DSGET user 1>nul 2>&1
IF %ERRORLEVEL% EQU 0 (
ECHO(
ECHO *** Erreur : Utilisateur d‚ja ‚xistant ! Appuyez sur une touche et corrigez votre saisie ...
PAUSE >nul
CLS
GOTO BEG
)

REM ========== Création des OU en fonction du Site et du Service d'affectation de l'utilisateur et vérification incohérences ==========
:OU
REM ========================= Site de Travail =========================
ECHO(
ECHO C: Colmar
ECHO M: Mulhouse
ECHO S: Strasbourg
CHOICE /C CMS /N /M "Selectionnez le Site de travail : "
SET V=%ERRORLEVEL%
FOR /F "tokens=%V%" %%i IN ("Colmar Mulhouse Strasbourg") DO (SET SITE=%%i)

REM ========================= Service de Travail =========================
ECHO(
ECHO B: Boutique
ECHO S: Stock
ECHO C: Compta
ECHO D: Direction
CHOICE /C BSCD /N /M "S‚lectionnez le Service : "
SET S=%ERRORLEVEL%
FOR /F "tokens=%S%" %%i IN ("Boutique Stock Compta Direction") DO (SET SERV=%%i)

REM ========================= Création OU et vérification =========================
SET OU=OU=User_%SERV%_%SITE%,OU=%SERV%_%SITE%,OU=Site-%SITE%,OU=Entreprise,DC=skynet,DC=t2si
DSGET OU %OU% >nul
IF %ERRORLEVEL% NEQ 0 (
CLS
ECHO %OU%
ECHO *** Erreur OU inexistante ! Appuyez sur une touche et corrigez votre saisie ...
PAUSE >nul
GOTO OU
)

REM ========================= Attribution des chemins de profils et documents =========================
SET HD=\\%PDC%\Documents\%SERV%\%SITE%\%USER%
IF %SERV%==Boutique (
SET PROFIL=\\%PDC%\Profils$\%SITE%\%SERV%\%USER%
) ELSE (
IF %SERV%==Compta (
SET PROFIL=\\%PDC%\Profils$\%SITE%\%SERV%\%USER%
) ELSE (
SET PROFIL=Local
)
)

REM ========================= Résumé infos Utilisateur et Confirmation =========================
CLS
ECHO **********************************
ECHO *** Renseignements Utilisateur ***
ECHO **********************************
ECHO(
ECHO Nom :            %LN%
ECHO Pr‚nom :        %FN%
ECHO T‚l‚phone personnel :    %TEL%
ECHO MAIL :            %MAIL%
ECHO Service :        %SERV%
ECHO Site de travail :    %SITE%
ECHO(
ECHO Compte :        %USER%
ECHO Profil :        %PROFIL%
ECHO Dossier Documents :    %HD%
ECHO(
ECHO Unit‚ Organisation :    %OU%
ECHO Domaine :        %DOM%
ECHO(
CHOICE /C ONA /N /M "Merci de confirmer l'exactitude des Informations (O)ui (N)on (A)nnuler :"
IF %ERRORLEVEL%==2 GOTO BEG
IF %ERRORLEVEL%==3 GOTO END

REM ========================= CREATION DU FICHIER LOG =========================
:LOG
SET LP=\\%PDC%\log$\Utilisateurs\%SITE%.%SERV%.%USER%.log

ECHO ###################### LOG CREATION Utilisateur %USER% ######################>%LP%
ECHO(>>%LP%
ECHO Date :            %DATE% %TIME%>>%LP%
ECHO Script :        %~dp0%~nx0>>%LP%
ECHO Version :        %VER%>>%LP%
ECHO Créateur :        %USERNAME%>>%LP%
ECHO Depuis le Poste :    %COMPUTERNAME%>>%LP%
ECHO(>>%LP%
ECHO ######################################## INFOS UTILISATEUR ########################################>>%LP%
ECHO(>>%LP%
ECHO Nom :        %LN%>>%LP%
ECHO Prénom :    %FN%>>%LP%
ECHO Tel :        %TEL%>>%LP%
ECHO Email :        %MAIL%>>%LP%
ECHO Site :        %SITE%>>%LP%
ECHO Service :    %SERV%>>%LP%
ECHO(>>%LP%
ECHO Login :        %USER%>>%LP%
ECHO Password :    %PWD%>>%LP%
ECHO OU :        %OU%>>%LP%
ECHO Profil :    %PROFIL%>>%LP%
ECHO Documents :    %HD%>>%LP%
ECHO(>>%LP%
ECHO ######################################## RESULTATS ########################################>>%LP%
ECHO(>>%LP%

REM ========== COMMANDES CREATION REEL UTILISATEUR avec log des résultats des commandes ==========
ECHO *** Création Répertoire %HD%>>%LP%
MKDIR %HD% 1>>%LP% 2>>&1
ECHO(>>%LP%

ECHO *** Attribut caché répertoire %HD%>>%LP%
ATTRIB +H %HD% 1>>%LP% 2>>&1
ECHO(>>%LP%

ECHO *** Suppression des héritages parents %HD%>>%LP%
ICACLS %HD% /inheritance:d 1>>%LP% 2>>&1
ECHO(>>%LP%

ECHO *** Suppression des droits de sécurité Utilisateurs pour %HD%>>%LP%
ICACLS %HD% /remove:g Utilisateurs 1>>%LP% 2>>&1
ECHO(>>%LP%

ECHO *** Création Utilisateur "CN=%USER%,%OU%">>%LP%
IF %PROFIL%==Local (
DSADD user "CN=%USER%,%OU%" -samid "%USER%" -upn %MAIL% -fn %FN% -ln %LN% -display "%FN% %LN%" -hometel "%TEL%" -email %MAIL% -dept %SERV% -company %SITE% -hmdir %HD% -pwd %PWD% -canchpwd yes -mustchpwd yes -disabled no 1>>%LP% 2>>&1
) ELSE (
DSADD user "CN=%USER%,%OU%" -samid "%USER%" -upn %MAIL% -fn %FN% -ln %LN% -display "%FN% %LN%" -hometel "%TEL%" -email %MAIL% -dept %SERV% -company %SITE% -profile %PROFIL% -hmdir %HD% -pwd %PWD% -canchpwd yes -mustchpwd yes -disabled no 1>>%LP% 2>>&1
)

ECHO(>>%LP%
ECHO(>>%LP%
ECHO *** Ajout au groupe %SERV%>>%LP%
DSMOD group "CN=%SERV%,OU=Groupes,DC=skynet,DC=t2si" -addmbr "CN=%USER%,%OU%" 1>>%LP% 2>>&1
ECHO(>>%LP%
ECHO(>>%LP%
ECHO *** Ajout au groupe %SITE%>>%LP%
DSMOD group "CN=%SITE%,OU=Groupes,DC=skynet,DC=t2si" -addmbr "CN=%USER%,%OU%" 1>>%LP% 2>>&1
ECHO(>>%LP%
ECHO(>>%LP%

ECHO *** Ajout des droits de sécurité pour %USER% sur %HD%>>%LP%
ICACLS %HD% /grant:r SKYNET1\%USER%:(F) 1>>%LP% 2>>&1
ECHO(>>%LP%
ECHO *** Suppression des droits de sécurité pour %USERNAME% sur %HD%>>%LP%
ICACLS %HD% /remove:g %USERNAME% 1>>%LP% 2>>&1
ECHO(>>%LP%

REM *** Modification des droits de sécurité Lecture & Exécution sur le fichier log
ICACLS %LP% /inheritance:d 1>>nul 2>>&1
ICACLS %LP% /remove:g %USERNAME% 1>>nul 2>>&1
ICACLS %LP% /grant:r Utilisateurs:(RX) 1>>nul 2>>&1

CLS
ECHO Cr‚ation utilisateur %FN% %LN% termin‚
ECHO Fichier log : %LP%
ECHO(
ECHO(
CHOICE /M "Voulez-vous ajouter un autre utilisateur "
IF %ERRORLEVEL%==1 GOTO BEG

:END

1 réflexion au sujet de “Création d’Utilisateur(s) : exemple de scripts BATCH DOS (Local=net user / Domain AD=dsadd)”

  1. Компания http://obmenneg.com/ является автоматическим и круглосуточным онлайн -сервисом, который позволяет обменять средства. И для этого нет необходимости выходить из дома. Так получиться осуществить обмен между системами, банковскими картами, криптовалютами. Но самое главное, что сервис работает круглосуточно, а потому совершить операции вы можете в любой час. При помощи полной автоматизации удалось добиться важных преимуществ перед аналогичными компаниями:

    1. Все операции происходят очень быстро, включая webmoney обмен онлайн
    2. На минимальную сумму обмена влияют требования определенных платежных систем
    3. Обмен можно осуществлять в любое время: поздно ночью, либо ранним утром
    4. Из-за того, что издержки минимальны, то и комиссия взимается символическая

    Все эти преимущества создают необходимые предпосылки для того, чтобы обратиться за помощью именно в эту компанию. Так вы потеряете минимум времени и денег. Воспользуйтесь услугами компании, которая дорожит клиентами и выполняет все обязанности на высшем уровне.

Laisser un commentaire