Romain Tiennot

Technicien Superieur en Informatique

Aller au contenu | Aller au menu | Aller à la recherche

Création de compte Active Directory via Excel

Voici un petit script permettant de créer des comptes Active Directory avec un fichier Excel. Dans mon exemple, je renseigne simplement le nom, prénom et service du futur utilisateur. Le script aura comme fonction de :

  • Verifier la presence du fichier excel
  • Verifier que toute les cellules "Nom" soient saisie
  • Verifier que toute les cellules "Prenom" soient saisie
  • Verifier que toute les cellules "Service" soient saisie
  • Verifier que la somme de "Nom" et "Prenom" soit inferieur à 20 caractère



Une fois les checks validé, la création du compte peux commercer :

  • Création du compte
  • Renseigne dans la description le nom
  • Renseigne dans la description le prenom
  • Renseigne le nom complet
  • Renseigne le chemin du profils
  • Rajoute dans le groupe du service
  • Génère le mot de passe
  • Active le changement de mot passe à la premiere ouverture de session
  • Ajoute une restriction d'horaire d'ouverture de session pour certain groupe

J'ai créé le script sous Autoit qui utilise la fonction "AD" disponible ICI : Voici le code :

#include <Excel.au3>
#include <AD.au3>
$fichier = @ScriptDir & "\comptead.xls"
$fin = 0
;~ verification de la présence du fichier excel
If not FileExists(@ScriptDir&"\comptead.xls") = 1 Then
	msgbox(64,"ERREUR","Le fichier comptead.xls n'est pas présent dans "&@ScriptDir)
exit
Else
	;~ Ferme Excel
	ProcessClose("Excel.exe")
	;~ Ouvre le fichier excel
	_ExcelBookOpen($fichier)
	$oExcel = ObjGet("","Excel.Application")
	$oExcel.SheetsInNewWorkbook = 1
	;~ Cache le fichier excel
	$oExcel.Visible = 0
	;~ Compte le nombre de ligne
	$nb_ligne   = $oExcel.ActiveSheet.UsedRange.Rows.Count
		;~ Début de la verification des lignes
		for $i = 1 to $nb_ligne-1 step 1
			;~ Création de la variable "nom" présent dans la premiere colonne
			$nom = $oExcel.Activesheet.Cells(1+$i,1).Value
			;~ Création de la variable "prenom" présent dans la deuxieme colonne
			$prenom = $oExcel.Activesheet.Cells(1+$i,2).Value
			;~ Création de la variable "fonction" présent dans la troisieme colonne
			$fonction = $oExcel.Activesheet.Cells(1+$i,3).Value
			;~ Création de la variable "cb" qui compte le nom de caratère nom + prenom
			$cb = stringlen($nom)+stringlen($prenom)
 
			;~ Si aucun nom n'est saisie dans la colonne "nom" alors message d'erreur
			if not $nom = true then
				msgbox(0,"Erreur Nom "," La cellule "&$i+1& " est vide dans la colonne nom")
				exit
			;~ Si aucun prenom n'est saisie dans la colonne "prenom" alors message d'erreur
			elseif not $prenom = true Then
				msgbox(0,"Erreur Prenom","La cellule "&$i+1& " est vide dans la colonne prenom")
				Exit
			;~ Si l'addition du prenom et nom egal ou superieur à 20 caratère alors erreur
			elseif	$cb >= 20 Then
				msgbox(0,"Erreur Caractère","Ligne "&$i+1&", l'identifiant "&$prenom&" "&$nom&" est > ou = à 20 caractères : "& $cb)
				exit
			EndIf
			;~ Si dans la colonne fonction, les champs saisie n'egal pas "Direction" ou "Administration" ou "Prodution1" ou "Production2" ou "Informatique" alors erreur
			if not (($fonction = "Direction") or ($fonction = "Administration") or ($fonction = "Production 1") or ($fonction = "Production 2") or ($fonction = "Informatique")) Then
				msgbox(0,"Erreur Service","La cellule "&$i+1& " n'est saisie correctement dans la colonne service")
				exit
			endif
		Next
 
			;~ En fonction de la fonction, les variables sont generé comme l'UPN, le nom complet, son OU et le GROUPE
			for $i = 1 to $nb_ligne-1 step 1
				$nom = $oExcel.Activesheet.Cells(1+$i,1).Value
				$prenom = $oExcel.Activesheet.Cells(1+$i,2).Value
				$fonction = $oExcel.Activesheet.Cells(1+$i,3).Value
				$ncomplet = $prenom&" "&$nom
				$upn = StringReplace($prenom&"."&$nom," ","")
 
				if $fonction = "Direction" Then
					$ou = 'OU=Utilisateurs,OU=Service Direction,DC=drinkevol,DC=lan'
					$groupe = 'CN=Direction,'&$ou
					desc()
 
				elseif $fonction = "Administration" Then
					$ou = 'OU=Utilisateurs,OU=Service Administratif,DC=drinkevol,DC=lan'
					$groupe = 'CN=Administration,'&$ou
					desc()
 
				elseif $fonction = "Informatique" Then
					$ou = 'OU=Utilisateurs,OU=Service Informatique,DC=drinkevol,DC=lan'
					$groupe = 'CN=Technique,'&$ou
					desc()
 
				elseif $fonction = "Production 1" Then
					$ou = 'OU=Utilisateurs,OU=Production 1,OU=Service Production,DC=drinkevol,DC=lan'
					$groupe = 'CN=Production1,'&$ou
					desc()
 
				elseif $fonction = "Production 2" Then
					$ou = 'OU=Utilisateurs,OU=Production 2,OU=Service Production,DC=drinkevol,DC=lan'
					$groupe = 'CN=Production2,'&$ou
					desc()
				EndIf
 
				func desc()
					_AD_Open()
						;~ Création de l'utilisateur
						$iValue = _AD_CreateUser($ou, $upn, $ncomplet)
						;~ Si c'est reussi alors
						If $iValue = 1 Then
							$fin = $fin + 1
							MsgBox(64, "Création du compte de '"&$ncomplet&"'", "L'utilisateur '" & $ncomplet & "' a été crée avec succés est dans l'OU '" & $ou,1)
 
;~ 							$iValue = _AD_ModifyAttribute($sUser, "description", "Description")
;~ 							$iValue = _AD_ModifyAttribute($sUser, "mail", "email")
							;~ On ecrit dans le champs "Prenom"
							$iValue = _AD_ModifyAttribute($upn, "givenName", $prenom)
							;~ On ecrit dans le champs "Nom"
							$iValue = _AD_ModifyAttribute($upn, "sn", $nom)
							;~ On créé le nom d'affichage
							$iValue = _AD_ModifyAttribute($upn, "displayName", $ncomplet)
							;~ On indique le chemin du profils
							$iValue = _AD_ModifyAttribute($upn, "profilepath", "\\drinkevol.lan\Profils\"&$upn)
							;~ On l'ajoute dans le groupe
							$iValue = _AD_AddUserToGroup($groupe, $upn)
							;~ On genere son mot de passe
							$iValue = _AD_SetPassword($upn, StringUpper(StringLeft($prenom, 1))&StringLower(StringLeft($nom, 1))&"123456")
							;~ On active le changement de mot de passe
							Run(@ComSpec & " /c " & 'dsmod user "CN='& $ncomplet &","& $ou &'" -mustchpwd yes', "", @SW_HIDE)
							;~ En fonction de son groupe, on active une restriction de connexion
							if $fonction = "Production 1" or $fonction = "Production 2" or $fonction = "Administration" Then
								Run(@ComSpec & " /c " & 'net user '&$upn&' /Domain /time:L,07:00-20:00;Ma,07:00-20:00;Me,07:00-20:00;J,07:00-20:00;V,07:00-20:00;S,07:00-20:00;D,07:00-20:00', "", @SW_HIDE)
							EndIf
						;~ si l'erreur = 1 alors le compte existe deja
						ElseIf @error = 1 Then
							MsgBox(64, "Création du compte de '"&$ncomplet&"'", "L'utilisateur '" & $ncomplet & "' est déja existant",1)
;~ 								ElseIf @error = 2 Then
;~ 									MsgBox(64, "Création du compte de '"&$ncomplet&"'", "OU '" & $ou & "' does not exist")
;~ 								ElseIf @error = 3 Then
;~ 									MsgBox(64, "Création du compte de '"&$ncomplet&"'", "Value for CN (e.g. Lastname Firstname) is missing")
;~ 								ElseIf @error = 4 Then
;~ 									MsgBox(64, "Création du compte de '"&$ncomplet&"'", "Value for $sAD_User is missing")
						Else
							MsgBox(64, "Création du compte de '"&$ncomplet&"'", "Retour code erreur '" & @error & "' venant de l'Active Directory")
						EndIf
					_AD_Close()
					endfunc
				Next
 
EndIf
;~ Ferme le fichier excel
ProcessClose("Excel.exe")
;~ Affiche un petit rapport
msgbox(0,"Fin","La création est terminée avec "&$fin&" compte(s) créé(s)",2)

Et comme toujours, la petite video montrant le tout :

Activation/Désactivation périphérique de masse.

J'ai conçu un script permettant d'activer ou désactiver très rapidement les périphériques de masse d'un ordinateur. (Clé USB, disque dur Externe...). Cela ne coupe pas l'alimentation des ports donc aucune crainte pour les claviers ou autre périphérique. Ce script est à utiliser principalement dans une architecture d'entreprise. Il est mis à disposition en pièce jointe mais il n'est qu'en version d'essai. Après la troisième utilisation, un message vous indiquera de prendre contact directement sur mon blog ou par email.

Les avantages sont :

  • Eviter les virus (autorun).
  • Eviter la fuite d'information.
  • Eviter l'apport de donnée externe.


Son utilisation est très simple, vous n'avez qu’à l’exécuter, saisir un nom d'ordinateur ou son adresse IP et vous aurez le choix d'activer ou désactiver les périphériques de masse. usb.jpg

A bientôt,

Romain

page 2 de 2 -