Vous êtes sur la page 1sur 78

Année académique 2020-2021

Groupement des Services d’Eau et d’Electricité


Université Internationale de Côte d’Ivoire

PROJET DE FIN D’ETUDES

AUTOMATISATION DE CREATION ET MODIFICATION DES


COMPTES ACTIVE DIRECTORY VIA POWERSHELL

DIABAGATE Ibrahim

Octobre 2021 à Janvier 2022

Maître de Stage : Mr Yeo Seydou

Enseignant référant : Dr Traoré Issa

Etablissement : Université Internationale de Côte d’Ivoire (UICI)


Formation : Licence en Informatique développement d’applications
Entreprise d’accueil : Groupement des Services d’Eau et d’Electricité (GS2E)

Membre du jury :

• Dr Mamadou DIARRA (Président)


• Dr Assohoun Stanislas (Examinateur)
• Dr Traoré Issa (Encadreur)
Automatisation de la création et mise à jour des comptes AD via PowerShell 1
DEDICACE

A ma famille…

Automatisation de la création et mise à jour des comptes AD via PowerShell 2


REMERCIEMENTS

Je tiens à remercier toutes les personnes qui ont contribué au bon déroulement de mon stage et
qui m'ont aidé lors de la rédaction de ce rapport.

Tout d'abord, j'adresse mes remerciements à mon professeur, Dr Traoré Issa et Mr Abdoulaye
N’guetta, responsable du département de production informatique du GS2E qui m'ont beaucoup
aidé dans ma recherche de stage et m'ont permis de postuler dans cette entreprise. Leurs écoutes
et leurs conseils m'ont permis de cibler mes candidatures, et de trouver ce stage qui était en totale
adéquation avec mes attentes.

Je tiens à remercier vivement mon maitre de stage, Mr Yeo Seydou, chef du service de supervision
du DPI au sein de GS2E, pour son accueil, son assistance et le partage de son expertise au quotidien.
Grâce aussi à sa confiance j'ai pu m'accomplir totalement dans mes missions.

Je remercie également tous les collaborateurs du GS2E pour leur accueil, leurs conseils et
enseignements, en particulier Mr Oka Mozer et Mr Adjossan Desire, qui m'ont beaucoup aidé
à comprendre le fonctionnement de l’entreprise et à gagner en expérience, Ils furent d'une aide
précieuse dans les moments les plus délicats.

Enfin, je tiens à remercier toutes les personnes qui m'ont conseillé et soutenu : ma famille, mes
amis.

Automatisation de la création et mise à jour des comptes AD via PowerShell 3


GLOSSAIRE

AD : Active directory

ASP (Active Server Page) : Page de Serveur Active

CDI : Contrat à Durée Indéterminé

CIE : Compagnie Ivoirienne d'Electricité

CI/CD (Continuous Integration/Continuous Deployement) : intégration continue, déploiement continue

CLR (Common Langage Runtime) : Exécution de Langage Commun

CSV (comma separated values) : Fichier sans formatage particulier. Chaque champ est séparé par une virgule.

DG : Direction Générale

DGD : Direction Générale Déléguée

DMS : Département de Management des Services

DPI : département de Production Informatique

DSC (Desired State Configuration) : Configuration d’état souhaité

GIE : Groupement à Intérêt Economique

GS2E : Groupement des Services d'Eau et d'Electricité

IIS (Internet Information Server) : Serveur d'informations Internet

ISE : PowerShell Integrated Scripting Environment

LDAP (Lightweight Directory Access Protocol) : Protocol d’Accès au Répertoire Leger

MCO : Mise En Contrôle Opérationnelle

OU (Organizational Units) : Unités Organisationnelles

PCA : président du conseil d’Administration

RDP (Remote Desktop Protocol) : Protocole de Bureau à Distance

SI : Système d'Information

Automatisation de la création et mise à jour des comptes AD via PowerShell 4


SIGEC : Société Internationale de Gestion d’Etude et de Conseils

SODECI : Société de Distribution d'Eau de Côte d'Ivoire

VSCode : Visual Studio Code

WMI (Windows Management Instrumentation) : Instrumentation de Gestion Windows

WSH (Windows Scripting Host) : Hôte de Script Windows

LISTE DES FIGURES

Figure 01 : Présentation des pôles du GS2E

Figure 02 : Parc Informatique du GS2E

Figure 03 : Interface de VS Code

Figure 04 : Interface de PowerShell ISE

Figure 05 : Icônes des outils de développements

Figure 06 : Fenêtre des propriétés d’un compte utilisateur

Figure 07 : Attributs d’un compte utilisateur AD

Figure 08 : Dossier de Création de compte utilisateur

Figure 09 : Menu du script de création de comptes utilisateurs

Figure 10 : Création de compte utilisateur

Figure 11 : Fichier de création de compte utilisateur

Figure 13 : Logs du script de création de compte

Figure 14 : Dossier de Création de compte utilisateur

Figure 15 : Fichier de configuration de mise à jour de compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 5


Figure 16 : Fichier de configuration de mise à jour de compte pour enregistrement multiple

Figure 17 : Fichier de mise à jour de compte

Figure 18 : Résultat du script de création de compte

Figure 19 : Logs du script de mise à jour des comptes

Figure 20 : Logs du script de mise à jour des comptes

Figure 21 : Dossier du script de Création de compte utilisateur

Figure 22 : Menu du script de recherche comptes utilisateurs

Figure 23 : Fichier de la liste des matricules des comptes utilisateurs

Figure 24 : Résultat du script de recherche de plusieurs comptes

Figure 25 : Fichier générer par le script de recherche de compte utilisateur

Figure 26 : Logs du script de recherche des comptes utilisateurs

LISTE DES TABLEAUX


Tableau 1 : Avantages de ADManager

Tableau 2 : Avantages et Inconvenants de PowerShell

LISTE DES LOGIGRAMMES


Logigramme 1 : Création d’un compte utilisateur

Logigramme 2 : Création de plusieurs comptes utilisateurs

Logigramme 3 : Mise à jour d’un compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 6


Logigramme 4 : Mise à jour de plusieurs comptes

Logigramme 5 : Recherche d’un compte utilisateur

Logigramme 6 : Recherche de plusieurs comptes utilisateurs

LISTE DES ORGANIGRAMMES


Organigramme 1 : Structure Managérial du GS2E

Organigramme 2 : Présentation des pôles SI

Organigramme 3 : Présentation du DPI

Automatisation de la création et mise à jour des comptes AD via PowerShell 7


TABLE DES MATIERES
DEDICACE............................................................................................................................................2
REMERCIEMENTS.................................................................................................................................3
GLOSSAIRE...........................................................................................................................................4
LISTE DES FIGURES...............................................................................................................................5
LISTE DES TABLEAUX............................................................................................................................6
LISTE DES LOGIGRAMMES....................................................................................................................6
LISTE DES ORGANIGRAMMES...............................................................................................................7
INTRODUCTION GENERALE................................................................................................................10
PARTIE 1 : PROBLEMATIQUE..............................................................................................................12
CHAPITRE I : CONTEXTE ET CENTRE D'INTERETS...................................................................................13
I- Contexte.................................................................................................................................13
II- Centre d'intérêts....................................................................................................................13
CHAPITRE II : IDENTIFICATION DU PROBLEME......................................................................................14
I- Problématique........................................................................................................................14
II- Formulation des exigences.....................................................................................................14
PARTIE 2 : CADRE DE RECHERCHE ET REFERENCES..............................................................................15
CHAPITRE I : PRESENTATION DE L'ENTREPRISE.....................................................................................16
I- Historique...............................................................................................................................16
II- Missions.................................................................................................................................16
III- Organisation du GS2E............................................................................................................17
IV- Présentation du Pôle SI.........................................................................................................18
CHAPITRE II : METHODE EXISTANTE......................................................................................................22
I- Présentation du parc informatique de l’entreprise..................................................................22
II- Méthode existante.................................................................................................................23
CHAPITRE III : CADRE DE REFERENCE....................................................................................................24
I- Critique du mécanisme existant..............................................................................................24
II- Proposition de solutions.........................................................................................................24
III- Objectif de la recherche........................................................................................................27
PARTIE 3 : ANALYSE ET MISE EN ŒUVRE DU PROJET..........................................................................28
CHAPITRE I : ANALYSE DU PROBLEME...................................................................................................29
I- Les langages de scripts utiles...................................................................................................29

8
Automatisation de la création et mise à jour des comptes AD via PowerShell
II- Présentation des éditeurs de code PowerShell.......................................................................33
Visual Studio Code.............................................................................................................33
PowerShell ISE...................................................................................................................33
III- Restrictions et contraintes des scripts....................................................................................35
IV- Organisation (structure du code)...........................................................................................35
CHAPITRE II : SOLUTIONS......................................................................................................................36
I- Choix des outils de développements.......................................................................................36
II- Présentation des scripts qui seront développés......................................................................37
CHAPITRE III : MISE EN ŒUVRE.............................................................................................................38
I- Explication et mode de fonctionnement des scripts.................................................................38
II- Test des scripts.......................................................................................................................48
III- Problèmes rencontrés et solutions trouvées..........................................................................62
Conclusion.........................................................................................................................................64
ANNEXE.............................................................................................................................................65
Bibliographie.....................................................................................................................................75

Automatisation de la création et mise à jour des comptes AD via PowerShell 9


INTRODUCTION GENERALE

Le Système d’information est un point vital et essentiel pour toutes entreprises, le bon
fonctionnement de ce système nécessite une bonne gestion et organisation de toutes les entités
qui la constitue. L’évolution technologique permet aujourd’hui aux entreprises quel que soit leur
taille et leur valeur économique de disposer de moyens leur permettant de gérer et maintenir leur
système d’information tout au long de leur évolution, L’un des moyens les plus efficaces qui
contribue à cela est l’active directory.

L’active directory (AD) est un annuaire LDAP pour les systèmes d’exploitation Windows, qui
répertorie et organise les utilisateurs, machines et applications au sein d’un système
d’information, l’objectif de l’AD est de centraliser deux fonctionnalités essentielles,
l’identification et l’authentification, car il est difficile voire même impossible d’assurer le bon
fonctionnement d’un système d’informations si les entités qui la composent ne sont pas fiables.

Par contre l’AD bien qu’elle soit un élément indispensable eu sein d’une entreprise son
utilisation classique peut s’avérer fastidieuse et lente par moment, quand il s’agit par exemple de
créer plusieurs comptes utilisateurs à la fois, effectuer des recherches dans l’AD, mettre à jour
certaines informations etc.… Pour faciliter l’exécution de ces tâches il faudra les automatiser et
c’est ainsi qu’intervient les langages de scripts comme PowerShell, VBScript ou encore JScript.

Dans notre cas, nous allons porter notre attention sur PowerShell qui est un langage de
programmation orienté objet et un interpréteur de commandes Shell interactif pour Windows et
Windows server, il représente un moyen essentiel de parvenir à l’automatisation des tâches AD.

Etant confronter à ce problème au sein du GS2E dans ce rapport nous étudierons comment
mettre en place des moyens d’automatiser les taches AD, comme la création ou la modification
de comptes utilisateurs avec PowerShell

Ce rapport représente donc l’ensemble des étapes suivies pour la mise en place de ce projet, il
organiser comme suit :

Automatisation de la création et mise à jour des comptes AD via PowerShell 10


La première partie intitulée « PROBLEMATIQUE » est consacré à la présentation du contexte
du problème et de notre centre d’intérêt.

La seconde partie intitulé « CADRE DE LA RECHERCHE ET DE REFERENCE », nous


allons présenter l’entreprise, les méthodes existantes et le cadre de référence dans lequel nous
parlerons des critiques et proposerons des solutions pour atteindre l’objectif recherché.

Et enfin dans la troisième partie intitulée « ANALYSE ET MISE EN ŒUVRE DU PROJET


», nous allons analyser le problème afin de trouver une solution pour y remédier tout en
présentant les étapes de la mise en œuvre de ce projet.

Automatisation de la création et mise à jour des comptes AD via PowerShell 11


PARTIE 1 : PROBLEMATIQUE

Automatisation de la création et mise à jour des comptes AD via PowerShell 12


CHAPITRE I : CONTEXTE ET CENTRE
D'INTERETS

I- Contexte
Le département de la production Informatique (DPI) du pôle SI de GS2E a pour rôle d’assurer le bon
fonctionnement et la maintenance du système d’information du groupe CIE-SODECI et ses filiales.
Dans le cadre de ses missions, le DPI est appelé à faire la création des comptes utilisateurs suite à
leur migration de service, ou encore la mise à jour des informations des employés au niveau de
l'annuaire AD. Cependant l'exécution de ses tâches AD sont trop répétitives lentes et fastidieuses,
lorsqu’il s’agit par exemple de créer ou de mettre à jour plusieurs comptes utilisateurs
à la fois. C’est en ce sens que ses tâches nécessitent d’être automatisées afin d’assurer la rapidité
l’efficacité et la fiabilité du service.

Ainsi l’objectif de ce projet est de trouver un moyen de réaliser cela à travers un langage de
script comme PowerShell.

II- Centre d'intérêts


Notre centre d’intérêt est la mise en place d’un système d’automatisation des tâches fastidieuses
et réplétives relatives à l’active directory, afin d’accroitre la productivité des services qui lui son
lié. Ses tâches concernent la mise à jour des comptes utilisateurs existants et la création de
nouveaux comptes pour des employés déjà existants mais qui n’avaient pas de comptent
auparavant.

Automatisation de la création et mise à jour des comptes AD via PowerShell 13


CHAPITRE II : IDENTIFICATION DU PROBLEME

I- Problématique
Assurer le bon fonctionnement, l'amélioration et l’accès aux ressources applicatives de l’entreprise
est l'une des nombreuses fonctions du DPI. La disponibilité et l’accès aux ressources doit se faire par
le biais de comptes utilisateurs Active Directory et le processus de création d’un compte utilisateur
peut prendre au moins 7 minutes, il se peut qu’on ait des requêtes de création ou de mise
à jour de 60 à 100 comptes à la fois dans les cas d’affectation des employés dans de nouvelles
directions, tel que le dispatching à Yamoussoukro du département de management des services
(DMS), ou dans les cas de migration de logiciel d’une version à l’autre comme le logiciel
SAPHIR qui est passé de la version 2 à la version 3 et nécessite en conséquence plus
d’utilisateurs. Ce problème affecte significativement la productivité du service, c’est en ce sens
que nous devons mettre en place un moyen d’automatisé ses tâches AD.

II- Formulation des exigences


Conformément à notre objectif, c’est à dire l’automatisation de création et modification des
comptes utilisateurs active directory via PowerShell, voici donc les exigences formulées par
l’entreprise :

➢ Créer des scripts PowerShell qui :


• Optimisent la création massive de comptes utilisateurs AD
• Facilitent la mise à jour des informations des comptes utilisateurs AD
• Améliorent la recherche d’informations utilisateurs AD
➢ Créer des scripts sécurisés et qui prennent en compte la gestion des erreurs
➢ Générer des logs pour chaque exécution des scripts

Automatisation de la création et mise à jour des comptes AD via PowerShell 14


PARTIE 2 : CADRE DE RECHERCHE
ET
REFERENCES

15
Automatisation de la création et mise à jour des comptes AD via PowerShell
CHAPITRE I : PRESENTATION DE L'ENTREPRISE

I- Historique
Crée en 1997, la Société Internationale de Gestion d’Etude et de Conseils (SIGEC) a fonctionné
en tant que prestataire de service pour le groupe CIE-SODECI. Après la renégociation du contrat
de la CIE en 2005, le président du conseil d’Administration (PCA) de CIE et de SODECI décide
une nouvelle orientation stratégique : désormais CIE et SODECI devront se concentrer sur leur
métier de base et laisser à un organisme, la gestion de toutes les activités de services, de
prestation, d’assistance aux métiers. C’est ainsi qu’est né un GIE (Groupement à Intérêt
Economique), notamment GS2E, depuis le 1er juillet 2006. Il n’a pas vocation à gagner de
l’argent et les missions consistent à faire des prestations aux meilleurs rapports qualités prix.

II- Missions
La Compagnie Ivoirienne d’Electricité (CIE) et la Société de Distribution d’Eau de Côte d’Ivoire
(SODECI) ont fait le choix de se recentrer sur leurs métiers de base et donc d’externaliser
certaines de leurs activités support au sein d’un groupement d’Intérêt Economique, Groupement
des Services Eau et Electricité (GS2E). GS2E permet donc de mutualiser certains services
supports de ses membres, de partager les expériences et d’optimiser les coûts.

Automatisation de la création et mise à jour des comptes AD via PowerShell 16


III- Organisation du GS2E

Le GS2E s’est doté d’un système managérial organisationnel qui comprend une Direction
Générale (DG) et 3 pôles.

Organigramme 01 : Structure Managérial du GS2E

Figure 01 : Présentation des pôles du GS2E

Automatisation de la création et mise à jour des comptes AD via PowerShell 17


IV- Présentation du Pôle SI

1- Présentation

Le pôle SI de GS2E aussi appelé Direction des Systèmes d’Informations (DSI) est directement
rattaché à la Direction Générale Délégué. Il a pour mission principale de concevoir, de mettre en
œuvre et d’exploiter le système informatique du groupe CIE-SODECI.

Direction Generale
Delegue SI

CONTROLE DE GESTION
Management de la controle de gestion et
securite(RSSI,DCP) Administration :
Service gestion / RH

Pilotage de la
performance SI(QOS)

DEPARTEMENT DEPARTEMENT DEPARTEMENT


DEPARTEMENT DEPARTEMENT
ARCHITECTURE ET PRODUCTION DEVELOPPEMENT
PROGRAMME SAPHIR TELECOM
PROJETS SI INFORMATIQUE INFORMATIQUE

Organigramme 02 : Présentation des pôles

Automatisation de la création et mise à jour des comptes AD via PowerShell 18


2- Présentation de la structure d’accueil DPI

Le département de production informatique est l’entité fonctionnelle qui nous a accueilli, il est
dirigé par Monsieur Abdoulaye N’GUETTA. Le DPI a pour missions :

o Gérer l’assistance et les dysfonctionnements chez les utilisateurs, ainsi que le parc de
matériels bureautiques
o Assurer la qualité technique et fonctionnelle des services et solutions livrés aux
utilisateurs

o Assurer la disponibilité, la sécurité et l’intégrité du système d’information


(données, applications et services).
o Exploitation et maintenance des infrastructures techniques et de sécurité

Ainsi pour mener à bien cette mission, le DPI est subdivisé en trois sous-directions que sont la
Préproduction, l’exploitation Informatique ou nous avons été assignés et enfin le Centre des
Services.

PRODUCTION
INFORMATIQUE

EXPLOITATION
PRE PRODUCTION CENTRE DE SERVICE
INFORMATIQUE

Architectures et Projets Assistance centralisee


MCO
Production et Hotline

Assistance
decentralisee
Support a la Transition Supervision SI
et Qualite technique Deploiement des postes
de travail

Exploitation SI et Gestion du Parc et


Experience client Gestion du magasin

Exploitation SI finances
Assistance Filiales
, RH et Techniques
Organigramme 03 : Présentation du
DPI

Automatisation de la création et mise à jour des comptes AD via PowerShell 19


3- La sous-direction d’exploitation Informatique

La sous-direction d’exploitation Informatique est composée de 4 services dont le service de

Maintien en Condition Opérationnelle (MCO), le service de supervision SI, le service


d’exploitation applications et expérience client et enfin le service d’exploitation application
finance, ressource humaine et techniques. Le service de supervision est le service d’accueil au
sein duquel nous allons effectuer notre stage sous la tutelle de Monsieur Yeo Seydou chef du
service.

EXPLOITATION
INFORMATIQUE

EXPLOITATION EXPLOITATION
MAINTIEN EN CONDITION
SUPERVISION SI APPLICATIONS APPLICATION FINANCE, RH
OPERATIONNELLE
EXPERIENCE CLLIENT ET TECHNIQUES

La sous-direction d’exploitation Informatique a pour missions :

• Assurer le déploiement, l'exploitation des logiciels et équipements informatiques,


téléphoniques

• Assurer la disponibilité du système informatique et télécommunication (sites production/de


reprise)
• Assurer la gestion des flux et échanges de fichiers entre les applications
• Assurer la continuité du service au niveau téléphonique
• Assurer l'accès au Système d'Information

• Exploiter l’infrastructure système et l’infrastructure réseaux informatiques et


de télécommunications

Automatisation de la création et mise à jour des comptes AD via PowerShell 20


• Assurer les traitements informatiques et la supervision globale du Système d’Information
• Assurer la maintenance des applications et de l’infrastructure système

• Veiller au respect de l’environnement de travail et des contraintes d’exploitation de la salle


machine au DSI (Climatisation, sécurité Incendie, Alimentation électrique etc.…)

• Assurer la continuité des services par la mise en condition opérationnelle du Plan de reprise
informatique et des sauvegardes

• Collecter et suivre le traitement de toutes les demandes de services et


dysfonctionnements informatiques et de télécommunications des utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 21


CHAPITRE II : METHODE EXISTANTE

Dans ce chapitre nous allons présenter les outils et des méthodes existantes de réalisation
des tâches AD au sein de l’entreprise.

I- Présentation du parc informatique de l’entreprise

Figure 02 : Parc informatique du GS2E

Automatisation de la création et mise à jour des comptes AD via PowerShell 22


II- Méthode existante

Que ce soit pour de nouvelles créations, des modifications ou la recherche de comptes utilisateurs
dans l’AD, le mode opératoire utilisé au sein de l’entreprise est une méthode classique, c’est-à-dire
soit par le centre d’administration active directory soit par le composant utilisateurs et
ordinateurs Active Directory qui sont des interfaces graphiques s’appuyant sur la technologie de
ligne de commande Windows PowerShell, il procure une gestion des données AD. La création d’un
compte utilisateur à travers centre d’administration active directory ou le composant utilisateurs et
ordinateurs Active Directory est processus long et minutieux.

Exemple de création de compte utilisateur dans Le centre d’administration Active Directory

Nous allons vous présenter quelques étapes de la création d’un compte utilisateur AD
▪Ouvrir Le centre d’administration active directory et Sélectionner le domaine contrôleurs
▪Secréation
positionner dans l’OU dans lequel on voudrait créer le compte et ouvrir une fenêtre de
de nouveau compte utilisateur
▪Renseigner ensuite les informations de l’utilisateur
▪ Créer la boîte mail de l’utilisateur

▪ Attendre 24H maximum pour la synchronisation

Automatisation de la création et mise à jour des comptes AD via PowerShell 23


CHAPITRE III : CADRE DE REFERENCE

I- Critique du mécanisme existant


Quand bien même que la méthode existante est fonctionnelle et est la plus utilisée, la création de
comptes utilisateurs AD par le centre d’administration active directory présente des
insuffisances, que ce soit pour la création de comptes utilisateurs ou la recherche d’utilisateurs
pour effectuer des modifications.

En effet comme on l’a mentionné précédemment, la création de comptes utilisateurs est une
action qui prend minimum 7 minutes de temps et peut être fastidieuse par moment, supposons
qu’on voudrait créer des comptes utilisateurs pour environ 30 personnes à la fois par le centre
d’administration active directory, on va se positionner dans une OU, ouvrir la fenêtre de
création et renseigner les informations du compte pour chacune des 30 personnes, on constate là
déjà que c’est une tâche qui nécessite beaucoup de temps et demande assez d’efforts ce qui peut
engendrer des risques d’erreurs et affecter la qualité du service de l’entreprise, nous vous
laissons donc imaginer pour ce qu’il en ai pour au moins le triple de ce nombre.

En ce qui concerne la recherche d’informations sur un compte, la fenêtre de recherche de comptes


utilisateurs dans l’AD ne propose que des recherches à partir du nom d’utilisateur(login), il est donc
difficile de trouver des informations sur un utilisateur si on n’a pas son login alors qu’il existe
d’autres attributs uniques à chaque utilisateur, comme le matricule.

II- Proposition de solutions


Il existe plusieurs solutions qui permettent l’optimisation des taches AD, comme des langages de
scripts ou des logiciels d’administration des serveurs AD.

Automatisation de la création et mise à jour des comptes AD via PowerShell 24


1- Logiciel d’administration de serveurs active directory

Comme logiciel nous allons vous présenter ADManager qui est un logiciel de gestion et de suivi
Active Directory (AD) qui permet aux administrateurs et aux techniciens informatiques de gérer
facilement les objets AD.

Tableau 01 : Avantages de ADManager

Bien qu’il soit important, ADManager est un logiciel payant qui coûte entre 327.250 et
519.750Fcfa, et il existe plusieurs d’autres logiciels de ce genre comme FOXPASS.

Automatisation de la création et mise à jour des comptes AD via PowerShell 25


2- Langages de script

Les langages de scripts sont des outils qui facilites l’optimisation des tâches active directory.
PowerShell est un langages script intégré à Windows dont la première version remonte à 2006.
Elle était à l'époque sortie sur Windows XP, Windows Vista et Windows Server 2003 et se
définissait comme le successeur de l'invite de commande de Windows. Il permet d’accéder à des
fonctions et des composants beaucoup plus nombreux et profonds d’un PC et d’un server Active
Directory dans notre cas, il est préféré par de nombreux professionnels de l’informatique et
administrateurs système.

Tableau 02 : Avantages et Inconvenants de PowerShell

Automatisation de la création et mise à jour des comptes AD via PowerShell 26


Il existe d’autres langages de scripts comme VBScript ou JScript mais qui ne sont pas aussi
avantageux que PowerShell.

III- Objectif de la recherche


Notre objectif est de créer des scripts PowerShell qui optimiseront les taches AD, tout en
respectant les restrictions et exigences de l’entreprise.

Automatisation de la création et mise à jour des comptes AD via PowerShell 27


PARTIE 3 : ANALYSE ET MISE EN
ŒUVRE DU PROJET

Automatisation de la création et mise à jour des comptes AD via PowerShell 28


CHAPITRE I : ANALYSE DU PROBLEME

I- Les langages de scripts utiles


Il existe plusieurs langages de scripts sous Windows qui pourraient nous être utile dans la
réalisation de notre projet tels que VBScript, JScript ou PowerShell.

1- L’hôte de script Windows


Windows script Host (WSH) est techniquement un hôte de script pour les moteurs de scripts
ActiveX. VBScript et JScript (implémentation de JavaScript par Microsoft) sont les deux
moteurs installés par défaut.

❖ VBScript
Microsoft Visual Basic Scripting (VBScript), un est langage de script qui permet d'utiliser des
scripts actifs dans de nombreux environnements, notamment :

• Windows Scripting Host (WSH) : il s'agit d'un interpréteur de scripts pour les systèmes
Microsoft Windows, permettant d'écrire des scripts afin de faciliter leur administration.

• Microsoft Internet Explorer : le langage VBScript peut être intégré dans les pages HTML,
au même titre que le JavaScript afin d'offrir des fonctionnalités interactives.
• Microsoft Internet Information Server (IIS) : il s'agit du serveur web de Microsoft
VBScript est le langage privilégié pour la programmation de pages Active Server Pages
(ASP), c'est-à-dire l'écriture de pages web dynamiques gérées du côté serveur.

Comme tout langage de script, VBScript est un langage interprété. Il ne nécessite pas de
compilation avant d'être exécuté. En revanche, il nécessite que la machine destinée à les exécuter

Automatisation de la création et mise à jour des comptes AD via PowerShell 29


possède un interpréteur, un programme capable de comprendre l'ensemble des instructions
présentes dans le programme. Selon l'utilisation les différents "interpréteurs" sont :

• ASP « asp.dll » (Active Server Page un ensemble de logiciels développées par Microsoft et
utilisé dans la programmation web) dans un environnement Web
• wscript.exe dans un environnent Windows
• cscript.exe dans un environnement à ligne de commande

Les fichiers VBScript pour Windows Scripting Host ont généralement l'extension de
fichier « .vbs »

❖ JScript
C'est un langage de script basé sur le standard utilisé par Microsoft dans Internet Explorer. Il
s'agit principalement d'un moteur Windows et peut être utilisé avec n'importe quel navigateur
Windows. JScript est le nom générique de plusieurs implémentations, suivant le standard
ECMAScript qui est un ensemble de normes concernant les langages de programmation de type
script et standardisées par Ecma International dans le cadre de la spécification ECMA-262. Il
s'agit donc d'un standard, dont les spécifications sont mises en œuvre dans différents langages de
script, comme JavaScript ou ActionScript. C'est un langage de programmation orienté prototype,
crée par Microsoft.

Ce type d'implémentation ajoute des possibilités spécifiques au langage JavaScript sur la


plateforme Windows. Il permet aussi d'utiliser ce langage JavaScript en dehors du cadre d'une
page web, soit sous forme de scripts d'un fonctionnement similaire aux scripts écrits en VBScript
ou interprétés côté serveur avec la technologie ASP.

Automatisation de la création et mise à jour des comptes AD via PowerShell 30


2- PowerShell
Avant de continuer, il est important pour nous de montrer pourquoi PowerShell serai l’élément
indispensable qui nous permettra d’atteindre notre objectif.

a- Description de PowerShell
PowerShell est une solution multiplateforme d’automatisation des taches, composé d’un
interpréteur de commandes (Shell), d’un langage de script et d’un Framework de gestion de la
configuration. PowerShell s’exécute sur Windows, linux et MacOs.

Shell

PowerShell est un interpréteur de commandes moderne qui comprend les meilleures fonctionnalités
d’autres interpréteurs de commandes populaires. Contrairement à la plupart d’entre eux, qui
acceptent et retourne uniquement du texte, PowerShell accepte et retourne des objets
.NET. L’interpréteur de commandes comprend les fonctionnalités suivantes

• L’Historique de lignes de commande robuste


• Saisie semi-automatique par tabulation et prédiction de commandes
• Alias de commandes et paramètres
• Pipeline pour le chainage des commandes
• Système d’aide dans la console

Langage de script

En tant que langage de script, PowerShell est souvent utilisé pour automatiser la gestion des
systèmes. Il sert également à créer à tester et à déployer des solutions souvent CI/CD. PowerShell
repose sur le Common Langage Runtime (CLR) .NET. Toutes les entrées et sorties sont des objets
.NET, il n’est donc pas nécessaire d’analyser la sortie pour extraire des informations. Le langage
de script PowerShell comprend les fonctionnalités suivantes :

• Extensibilité au moyen de fonctions, de classes, de scripts et de modules

Automatisation de la création et mise à jour des comptes AD via PowerShell 31


• Système de mise en forme extensible pour une sortie facile
• Système de type extensible pour la création de types dynamiques
• Prise en charge intégrée des formats de données courants (csv, json et xml)

Gestion des configurations

PowerShell Desired State Configuration (DSC) est un Framework de gestion dans PowerShell qui
vous permet de gérer l’infrastructure de votre entreprise avec la configuration sous forme de code

• Créer des configurations déclaratives et des scripts personnalisés pour des déploiements
reproductibles
• Appliquer les paramètres de configuration et signaler la dérive de configuration
• Déployer la configuration suivant des modèles

b- Le rôle de PowerShell dans l’optimisation des taches Active Directory


L’utilisation de l’interface graphique pour effectuer des tâches AD est beaucoup limité, il permet
d’effectuer que des actions prédéfinis et n’offre pas à son utilisateur la possibilité de mener certaines
actions souhaitées. Par contre PowerShell nous offre cette liberté de pouvoir effectuer autant de
tâches que possible grâce à des commandes ou des scripts qu’on développera à cet effet.

PowerShell est donc l’outil parfait à travers lequel nous allons résoudre notre problème
d’optimisation des tâches AD.

3- La différence entre PowerShell, VBscript et JScript


JScript est un langage de script construit par Microsoft et est compatible avec les applications
Windows, tandis que PowerShell est utilisé avec les applications du Framework .NET et utilisé pour
effectuer des travaux administratifs. Le VBscript est connu pour sa vitesse rapide et est inclus

Automatisation de la création et mise à jour des comptes AD via PowerShell 32


dans Windows 98 et est essentiellement utilisé pour créer des applications de serveur Web. Dans
notre intérêt PowerShell est le langage qui rentre dans notre carde d’usage des langages de scripts.

II- Présentation des éditeurs de code PowerShell


Nous avons le choix entre plusieurs éditeurs de code qui nous permettrons de développer nos
scripts comme :

Publication Plateforme(s) Particularité

Araneae 2006 Windows Raccourcis clavier (Quick


Clips)

Atom 2015 Windows, Linux Connexion directe à GitHub


(64 bits), MacOs

Brackets 2014 Windows, Linux, Rédigé en JavaScript, HTML


MacOs et CSS

GNU Emacs 1984 Windows, Linux, Le premier logiciel du projet


MacOs GNU

Notepad++ 2003 Windows Avec éditeur de macros

Visual Studio Code 2015 MacOs, Windows, Commandes Git intégrées,


Linux débogage direct dans
l’éditeur, multiplateforme

PowerShell ISE 2006 Windows Intégré à Windows 10 et


Windows server

Tableau 03 : Liste de quelques éditeurs de codes

Automatisation de la création et mise à jour des comptes AD via PowerShell 33


Bien qu’il existe un nombre important d’éditeurs de codes permettant d’écrire nos scripts
PowerShell, nous allons porter notre intérêt sur Visual Studio Code et PowerShell ISE.

Visual Studio Code est l’un des meilleurs éditeurs de code, avec VS Code il est possible
d’installer une extension permettant d’exécuter des commandes, écrire des modules et
développer des scripts PowerShell.

Figure 03 : Interface de VS Code

Windows Integrated Scripting Environment (ISE) est une application hôte pour Windows
PowerShell. Dans ISE, on peut exécuter des commandes et écrire, tester et déboguer des scripts
dans une seule interface utilisateur graphique Windows. ISE fournit l’Edition multiligne, la saisie
semi-automatique par tabulation, la coloration syntaxiques et l’exécution sélectives, l’aide
contextuelle et la prise en charge pour les langues s’écrivant de droite à gauche.

Figure 04 : Interface de PowerShell ISE

Automatisation de la création et mise à jour des comptes AD via PowerShell 34


Nous avons maintenant le choix entre l’utilisation de Visual Studio Code et Windows
PowerShell ISE.

III- Restrictions et contraintes des scripts


Pour une meilleure qualité, nos scripts doivent respecter certaines exigences et contraintes qui
sont les suivantes :

❖ Création de compte utilisateur


o Les logins doivent être créer automatiquement lorsqu’on charge le fichier
d’enregistrement
o Les logins doivent êtres uniques à chaque compte utilisateur
o Le fichier d’enregistrement des comptes utilisateurs doit être au format CSV
o Le login doit respecter la nomenclature définie par l’entreprise : prénom.nom

❖ Modification de compte utilisateur


o Le login, l’adresse de messagerie et le matricule ne doivent jamais être modifié pour les
employés en CDI

❖ Sécurité
o Gestion d’erreurs
o Générer des logs pour chaque exécution des scripts

IV- Organisation (structure du code)


Il existe plusieurs moyens d’organiser les scripts pour qu’ils soient facile à lire et à maintenir, dans
notre cas nous avons le choix entre deux modes opératoires desquels on pourrait tirer avantage :

o Le procédural avec option de choix : Ecrire tout le code dans un fichier avec un menu et
option de choix à l’exécution du script
o Modulaire : Séparer les scripts de sorte à ce qu’ils puissent être exécuté séparément et
utilisé comme module dans d’autres scripts

Automatisation de la création et mise à jour des comptes AD via PowerShell 35


CHAPITRE II : SOLUTIONS

I- Choix des outils de développements

❖ Windows 10 Entreprise

• Visual Studio Code 1.62: Pour le développement des scripts

• RDP (Remote Desktop Protocol) : pour la connexion au serveur de


test distant
❖ Windows Server 2016 Datacenter

• PowerShell ISE 5.1 : Modifier et tester le code sur le serveur AD


• Serveur Active Directory : Server AD de test

Figure 05 : Icônes des outils de développements

Automatisation de la création et mise à jour des comptes AD via PowerShell 36


II- Présentation des scripts qui seront développés

Conformément à notre objectif, nous allons développer des scripts suivants :


➢ Un script pour la création unique et multiple des comptes utilisateurs AD
➢ Un script pour Mise à jour des informations des comptes
➢ Autres scripts qui faciliteront l’administration du serveur AD
Le paradigme de programmation qui sera utilisé est le procédural avec option de choix à
l’exécution du script.

Automatisation de la création et mise à jour des comptes AD via PowerShell 37


CHAPITRE III : MISE EN ŒUVRE

I- Explication et mode de fonctionnement des scripts

1- Compte utilisateur active directory


Avant l’écriture des scripts, il important de connaître la constitution d'un compte utilisateur
active directory.

a- Fenêtre des propriétés d’un compte utilisateur


Cette Fenêtre affiche les informations du compte utilisateur sélectionné, à travers elle on
peut observer toutes les propriétés du compte.

Figure 06 : Fenêtre des propriétés d’un compte utilisateu

Automatisation de la création et mise à jour des comptes AD via PowerShell 38


a- Attributs d’un compte utilisateur AD
Les attributs affichés dans la fenêtre sont les attributs du comptes utilisateurs par lesquels on
va renseigner les informations du compte à créer ou à mettre à jour. Par exemple,
samAccountName pour le login, ou Company pour la société etc...

Figure 07 : Attributs d’un compte utilisateur AD

2- Création de compte utilisateur


Ce script est celui qui va nous permettre de créer plusieurs comptent utilisateurs dans
l’annuaire correctement le plus rapidement possible.

❖ Fonctionnalités :
Le script de création de comptes utilisateurs doit avoir les fonctionnalités suivantes :

✓ Générer un login unique au compte utilisateur


✓ Créer un compte à partir des informations renseignées à l'exécution

Automatisation de la création et mise à jour des comptes AD via PowerShell 39


✓ Créer plusieurs comptes utilisateurs en lot à partir d'un fichier au format csv
contenant leurs informations
✓ Gérer les erreurs (mauvaise saisie, fiabilité des informations saisie etc.…)
✓ Générer des logs

❖ Règles de gestions :

✓ Vérifier la présence du login à créer au niveau de l'AD avant de lancer le


processus de création du compte

✓ Création de compte pour salariés ayant plusieurs prénoms :


o Cas 1 : premier prénom.Nom
o Cas 2 : deuxième prénom.Nom
o Cas n : nième prénom.Nom jusqu’à trouver un login correct

Exemple : Si l’employé s’appelle Ibrahim Saïd Diabagate et que le login ibrahim.diabagate


existe déjà, alors le login à créer sera saïd.diabagate

✓ Création de compte pour salariées ayant un seul


prénom o Cas 1 : prénom.Nom
o Cas 2 : prénom(un chiffre).Nom

Exemple : Si le login ibrahim.diabagate existe déjà, alors le login à créer sera


ibrahim2.diabagate et si celui existe déjà le login à créer sera ibrahim3.diabagate jusqu’à
trouver un login correct.

✓ La date d’expiration du compte doit être définie obligatoirement pour les


comptes des employées qui ne sont pas en CDI

Automatisation de la création et mise à jour des comptes AD via PowerShell 40


❖ Logigrammes
Ces logigrammes montrent le processus algorithmique d'exécution du script.
➢ Création d’un seul compte utilisateur

Logigramme 01 : Création d’un compte utilisateur

Automatisation de la création et mise à jour des comptes AD via PowerShell 41


➢ Création de plusieurs comptes à partir d’un fichier CSV

Logigramme 02 : Création de plusieurs comptes utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 42


3- Mise à jour de compte utilisateur

Le script de la mise à jour des informations des comptes utilisateurs, pour faciliter la mise à jour
de plusieurs comptes à la fois.

❖ Fonctionnalités :
Le script de mise à jour des comptes utilisateurs doit avoir les fonctionnalités suivantes
✓ Mettre à jour les informations d'un compte à partir d'un fichier de configuration

Mettre à jour les informations de plusieurs comptes utilisateurs en lot à partir d'un
fichier au format csv et d'un fichier de configuration si nécessaire
✓ Gérer les erreurs (mauvaise saisie, fiabilité des informations saisie etc.…)
✓ Créer des logs

Automatisation de la création et mise à jour des comptes AD via PowerShell 43


❖ Logigrammes
Ces logigrammes montrent le processus algorithmique d'exécution du script.

➢ Mise à jour d’un seul compte utilisateur

Logigramme 03 : Mise à jour d’un compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 44


➢Mise à jour de plusieurs comptes

Logigramme 04 : Mise à jour de plusieurs comptes

Automatisation de la création et mise à jour des comptes AD via PowerShell 45


4- Effectuer des recherches

Ce script doit permettre d'obtenir des informations d'un compte utilisateur à partir du matricule
❖ Fonctionnalités :
Le script de mise à jour des comptes utilisateurs doit avoir les fonctionnalités suivantes
✓ Afficher les informations d’un compte utilisateur à partir de son matricule
✓ Générer un fichier contenant les informations de plusieurs comptes à
partir de leur matricule renseigné dans un autre fichier
✓ Gérer les erreurs (mauvaise saisie, fiabilité des informations saisie etc.…)
✓ Créer des logs
❖ Logigrammes

Ces logigrammes montrent le processus algorithmique d'exécution du script.


➢ Recherche unitaire

Logigramme 05 : Recherche d’un compte utilisateur

Automatisation de la création et mise à jour des comptes AD via PowerShell 46


➢ Recherche multiple

Logigramme 06 : Recherche de plusieurs comptes utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 47


II- Test des scripts
Nous allons maintenant exécuter les scripts sur le server AD de test afin d’observer ses résultats et
corriger les éventuelles erreurs.

1- Création de compte utilisateur


Nous avons organisé le script dans un dossier qui contient : le script PowerShell ( adUser.ps1), un fichier
CSV (newUsers.csv) qui contient les informations des comptes à créer en lot et un autre fichier CSV
(AdduserLogs.csv) contenu dans un dossier « Logs » pour l’enregistrement des logs.

Figure 08 : Dossier de Création de compte utilisateur

❖ Enregistrement unique
1- Exécuter le script en tant qu’administrateur
2- Choisir l’option « 1 »

Figure 09 : Menu du script de création de comptes utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 48


3- Renseigner les informations du compte et valider

Figure 10 : Création de compte utilisateur

Nous constatons là que le script s’est exécuté comme il se devait, nous allons maintenant tester
la création de compte multiple à partir d’un fichier csv.

❖ Enregistrement multiple
1- Nommer le fichier « newUsers.csv » et le placer dans le répertoire du script
2- Vérifier le fichier d’enregistrements

Figure 11 : Fichier de création de compte utilisateur

Automatisation de la création et mise à jour des comptes AD via PowerShell 49


3- Exécuter le script en tant qu’administrateur

Figure 09 : Menu du script de création de comptes utilisateurs

4- Choisir l’option « 2 »

Figure 12 : Résultat du script de création de compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 50


Le script à bel et bien créer les nouveaux comptes utilisateurs dans AD et a su identifier les anomalies et
effectué des exceptions.

Nous allons maintenant consulter les logs pour vérifier comment est-ce que ses actions ont été
enregistré.

❖ Observations des logs


Choisir l’option « 3 »

Figure 13 : Logs du script de création de compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 51


1- Mise à jour des comptes

Le script de mise à jour des informations des compte utilisateurs est aussi organisé dans un répertoire avec :
le script PowerShell (apdateUser.ps1), un fichier CSV (UsersIDList.csv) qui contient les informations

à mettre à jour et le matricule des comptes utilisateurs, deux fichiers de configurations


(configCompteUnique.psd1 et configFichierCsv.psd1) contenus dans un dossier « configs » et enfin un
fichier CSV (UpdateLogs.csv) contenu dans un dossier « Logs » pour l’enregistrement des logs.

Figure 14 : Dossier de Création de compte utilisateur

Automatisation de la création et mise à jour des comptes AD via PowerShell 52


❖ Mise à jour d’un compte
1- Renseigner le fichier de configuration « configCompteUnique.psd1 »

Figure 15 : Fichier de configuration de mise à jour de compte

2- Exécuter le script en tant qu’administrateur et Choisir l’option « 1 »

Figure 16 : Mise à jour d’un compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 53


3- On va vérifier si la mise à jour s’est effectuée

Figure 06 : Fenêtre des propriétés d’un compte utilisateur

❖ Mise à jour de plusieurs compte utilisateurs


1- Renseigner le fichier de configuration « configFichierCsv.psd1 »

Automatisation de la création et mise à jour des comptes AD via PowerShell 54


Figure 16 : Fichier de configuration de mise à jour de compte pour enregistrement multiple

2- Nommer le fichier « UsersIDList.csv » et le placer dans le répertoire du script


3- Vérifier le contenu du fichier

Figure 17 : Fichier de mise à jour de compte

Automatisation de la création et mise à jour des comptes AD via PowerShell 55


4- Exécuter le script en tant qu’administrateur et choisir l’option « 2 »

Figure 18 : Résultat du script de création de compte

5- On va vérifier si la mise à jour s’est effectuée

Figure 06 : Fenêtre des propriétés d’un compte utilisateur

Automatisation de la création et mise à jour des comptes AD via PowerShell 56


Le script à bel et bien mis à jour les informations des comptes utilisateurs et à faire des exceptions dans
son exécution.

❖ Observations des logs


Choisir l’option «3 »

Figure 20 : Logs du script de mise à jour des comptes

Automatisation de la création et mise à jour des comptes AD via PowerShell 57


2- Effectuer des recherches

Le script de mise à jour des informations des compte utilisateurs est aussi organisé dans un répertoire
avec : le script PowerShell (searchUser.ps1), un fichier CSV (IDList.csv) qui contient les matricules des
utilisateurs à rechercher et un fichier CSV (searchLogs.csv) contenu dans un dossier « Logs » pour
l’enregistrement des logs.

Figure 21 : Dossier du script de recherche de compte utilisateur

❖ Recherche unitaire
1- Exécuter le script en tant qu’administrateur
2- Choisir l’option « 1 »

Figure 22 : Menu du script de recherche comptes utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 58


3- Saisir le matricule de l’employé

Figure 23 : Résultat de recherche d’un comptes utilisateurs

❖ Recherche multiple
1- Fichier des matricules à rechercher

Figure 23 : Fichier de la liste des matricules des comptes utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 59


2- Exécuter le script en tant qu’administrateur
3- Choisir l’option « 2 »

Figure 22 : Menu du script de recherche comptes utilisateurs

4- Résultats

Figure 24 : Résultat du script de recherche de plusieurs comptes

Automatisation de la création et mise à jour des comptes AD via PowerShell 60


5- Observons le fichier généré

Figure 25 : Fichier générer par le script de recherche de compte utilisateur

Le script a donc généré un fichier csv avec les informations des comptes utilisateurs recherchés à partir
d’un fichier contenant uniquement leur matricule.

❖ Observation des logs


Choisir l’option « 3 »

Figure 26 : Logs du script de recherche des comptes utilisateurs

Automatisation de la création et mise à jour des comptes AD via PowerShell 61


III- Problèmes rencontrés et solutions trouvées

Nous avons relevé certaines erreurs lors de l’exécution du script de création de comptes
utilisateurs à partir d’un fichier CSV qui devront être corrigée

❖ Problèmes rencontrés
Sur 179 données, le script à créer 172 comptes et générer 7 erreurs, soit 96% des comptes
ont été créé en moins de 90 secondes.

Figure 12 : Résultat du script de création de compte

Ses erreurs d’enregistrement sont dues généralement au mauvais renseignement du fichier


d‘enregistrement :
▪ Des champs vides ou mal renseignés
▪La présence de certains caractères spéciaux (« . », « - ») dans le nom ou le prénom de
l’utilisateur qui ne sont pas pris en charge par la commande PowerShell de création de
compte

Exemple : Nom complet = Ibrahim D. => Nom de l’objet utilisateur = ibrahim.D.

❖ Solutions
Quand bien même que le script ait généré des erreurs, cela n’est pas dû à un disfonctionnement,
plus le fichier d’enregistrement est mal renseigné, plus le taux d’erreurs est élevé, par conséquent
la solution est de veiller à ce que le fichier respect les exigences du script.

Ses exigences sont les suivantes :

Automatisation de la création et mise à jour des comptes AD via PowerShell 62


▪Fournir les informations nécessaires à la création du compte comme le Nom, Prénom,
Fonction, Société, Département, Description et surtout le Matricule et la Date
d’expiration du Compte

▪Le nom et le prénom ne doivent pas contenir des caractères spéciaux comme « . » ou «

▪La date d’expiration du compte doit être définie obligatoirement pour les employés qui
ne sont pas en CDI
▪Le fichier d’enregistrement doit être obligatoirement au format csv

Automatisation de la création et mise à jour des comptes AD via PowerShell 63


Conclusion

Le système d’information est un élément central pour une entreprise, Il permet aux différents
acteurs de véhiculer des informations et de communiquer grâce à un ensemble de ressources
matérielles, humaines et logicielles. La gestion du SI est donc une tâche importante qui ne doit
pas être prise à la légère. Ainsi grâce à l'outil Microsoft, l'Active Directory, la gestion du SI
devient plus simple.

En effet L'AD est un annuaire qui permet de centraliser des informations relatives aux
utilisateurs et aux ressources d’une entreprise en fournissant des mécanismes d’identification
et d’authentification tout en sécurisant l’accès aux données. Cependant l’utilisation de l'AD au
sein des grandes entreprises comme le GS2E, le groupe CIE-SODECI et ses filiales présente
souvent beaucoup de risques et nécessites beaucoup d'efforts en tout ce qui concerne son
administration.

Etant confronté à cela au GS2E où la création et la modification de compte utilisateurs de


manière classique représentait un frein important, nous avons à cet effet développé des scripts
PowerShell qui nous ont permis de résoudre ce problème, un script pour la création et un script
pour la modification de plusieurs comptes utilisateurs à partir d'un fichier csv contenant les
informations des comptes tout en respectant les règles de gestion et les exigences de
l’entreprise, ses scripts réalisent des tâches en moins de 1% du temps qu’elles devraient
prendre et avec un taux d'erreurs presque nul. Nous avons aussi créé des scripts pour faciliter
la recherche et l’extraction des informations des comptes utilisateurs.

Ce projet nous a permis de comprendre l'AD et de découvrir réellement à quel point le langage
PowerShell peut être fascinant et peut être très indispensable dans le système d’information
d’une entreprise.

Cela nous a amené à nous demander jusqu’où PowerShell peut être indispensable au sein du
système d’information des entreprises ?

Automatisation de la création et mise à jour des comptes AD via PowerShell 64


ANNEXE
➢ Exemple de fichier de création des comptes

➢ Script PowerShell de création de comptes utilisateurs


Import-Module ActiveDirectory

#******************************** Importer le fichier des logs ************************************#


$logFilePath = Get-Location
$logFilePath = "$logFilePath\Logs\AdduserLogs.csv"
Write-Host $logFilePath
try{$log = Import-Csv -Path $logFilePath -Delimiter "," -Encoding
UTF8} catch{Write-warning $($_.exception.message)}
$countL = 1
foreach($info in $log){$countL+= 1}
#**************************************************************************************************#
$OU = "OU=Utilisateurs,OU=Comptes,OU=SODECI,DC=universlab,DC=local"

#********************** Exporter le fichier pour la création des boîtes mails *********************#


$userpath = Get-Location
$exportfile = "$userpath\forEmails.csv"
$userinfo = '"samAccountName","UserPrincipalName","EmailAddress"'
Add-Content -Path $exportfile -Value $userinfo
#**************************************************************************************************#

Clear-Host
$exit = 1
while($exit -eq 1)
{
Clear-Host

Automatisation de la création et mise à jour des comptes AD via PowerShell 65


Write-Host ""
Write-Output "--------------- ---------------{AJOUTDECOMPTE(S)UTILISATEUR} "
Write-Output ""
Write-Output " 1-> Enregistrement unique "
Write-Output " 2-> Enregistrement en lot "
Write-Output " 3-> Consulter les logs"
Write-Output ""
Write-Output "---------------------------------------------------------------- "
$action = Read-Host " Votre choix "

# FONCTIONS DE CREATION DU LOGIN


function Select-login($GivenName,$surName){
# samAccountName
# Login : Selectionner un login innexistant
$logList = $GivenName.TrimEnd()
$logList = $logList.Replace(" ",",")

# Cas ou l'utilisateur à plusieurs prénoms


if($logList.Contains(',') -eq $True)
{
$logList = $logList.Split(',')

$selected = $false
$i = 0
while($selected -eq $false)
{
# login = prenom.nom
$pre = $logList[$i]

$loginTemp = "$pre.$surName"

# verifier si le login existe


$verifLogin = Get-ADUser -Filter {SamAccountName -eq $loginTemp}

if($verifLogin -eq $null)


{
$samAccountName = $loginTemp
$selected = $true
}

# Cas ou le premier prénom n'est pas utilisable


else
{
$i = $i + 1

Automatisation de la création et mise à jour des comptes AD via PowerShell 66


# si l'utilisateur n'a qu'un seul prénom
if($logList[$i] -eq $null)
{
$j = 2
$quit = "no"
while($quit -eq "no")
{
# login = $prénom.nom(un chiffre)
$loginTemp = $logList[$i]+"$j"+".$surName"

# verifier si le login existe


$verifLogin = Get-ADUser -Filter {SamAccountName -eq $loginTemp}
if($verifLogin -eq $null)
{
$samAccountName = $loginTemp
$quit = "yes"
$selected = $true
}
else
{
$j = $j+1
}
}
}
# si l'utilisateur a un prénom de plus
else
{
# login = prénomsPrécédents.nom
$loginTemp = $logList[$i]+".$surName"

# verifier si le login existe


$verifLogin = Get-ADUser -Filter {SamAccountName -eq $loginTemp}
if($verifLogin -eq $null)
{
$samAccountName = $loginTemp
$selected = $true
}
}
}
}
}
# Cas ou l'utilisateur n'à qu'un seul prénom
else
{
# login = prenom.nom

Automatisation de la création et mise à jour des comptes AD via PowerShell 67


$loginTemp = "$logList.$surName"

# verifier si le login existe


$verifLogin = Get-ADUser -Filter {SamAccountName -eq $loginTemp}

if($verifLogin -eq $null)


{
$samAccountName = $loginTemp
$selected = $true
}

# Cas ou le premier prénom n'est pas utilisable


else
{
$j = 2
$quit = "no"
while($quit -eq "no")
{
# login = $prénom(un chiffre).nom
$loginTemp = "$logList$j.$surName"

# verifier si le login existe


$verifLogin = Get-ADUser -Filter {SamAccountName -eq $loginTemp}
if($verifLogin -eq $null)
{
$samAccountName = $loginTemp
$quit = "yes"
}
else
{
$j = $j+1
}
}
}
}
return $samAccountName
}

# ENREGISTREMENT UNIQUE
if($action -eq 1)
{
Clear-Host
Write-Output "-------------------[ ENREGISTREMENT UNIQUE ]--------------------"

Automatisation de la création et mise à jour des comptes AD via PowerShell 68


# Informations du compte
$EmployeeID = Read-Host "♣ Matricule "
$Title = Read-Host "♣ Fonction "
$givenName = Read-Host "♣ Prénom "
$surName = Read-Host "♣ Nom de famille "
$homePage = $EmployeeID
$Company = Read-Host "♣ Société "
$Department = Read-Host "♣ Departement "
$initial = "Person"
$Description = Read-Host "♣ Description "
$MobilePhone = Read-Host "♣ Num téléphone "
$AccountExpirationDate = $null
$chemin = $OU
$DisplayName = "$givenName $surName"

# Mot de passe
$acountPassword = "P@ssw0rd2021"
$acountPassword = ConvertTo-SecureString $acountPassword -AsPlainText -Force

# Verifier si le matricule existe dejà


$verifmat = Get-ADUser -Filter {HomePage -eq $homePage} -SearchBase $OU

if($verifmat.PropertyCount -eq $null)


{
# Création du login
$samAccountName = Select-login -GivenName $givenName -surName $surName
$EmailAddress = "$samAccountName@$Company.ci" $name = $samAccountName
$UserPrincipalName = $samAccountName.Replace("."," ")

# Creer le compte
$erreur = "" try

{
$newAduser = New-ADUser -Name $name -EmployeeID $EmployeeID -EmailAddress $EmailAddress -
HomePage $EmployeeID -Initials "Person" -GivenName $givenName -Surname $surName -SamAccountName
$samAccountName -UserPrincipalName $userPrincipalName -AccountPassword $acountPassword -Enabled $true -
ChangePasswordAtLogon $true -Path $chemin -Title $Title -DisplayName $DisplayName -Department $Department
-Company $Company -Description $Description -MobilePhone $MobilePhone -AccountExpirationDate
$AccountExpirationDate
$newAduser
Write-Host " Utilisateur $samAccountName créer avec succes !"

# Enregistrer dans le log

Automatisation de la création et mise à jour des comptes AD via PowerShell 69


$date = Get-Date
$logvalue = '"'+$countL+'","'+$EmployeeID+'","'+$samAccountName+'","Succes","Utilisateur
créer avec succes !","Fichier","'+$date+'"'
Add-Content -Path $logFilePath -Value $logvalue
$countL += 1
}
catch{
$erreur = $($_.exception.message)
Write-Warning $erreur

# Enregistrer dans le log


$date = Get-Date
$logValue =
'"'+$countL+'","'+$EmployeeID+'","Null","Echoué","'+$erreur+'","Unique","'+$date+'"'
Add-Content -Path $logFilePath -Value $logValue
$countL+=1
}
}
else
{
Write-Host "Ce matricule existe dejà !"
# Enregistrer dans le log
$date = Get-Date
$logValue = '"'+$countL+'","'+$EmployeeID+'","Null","Echoué","Ce matricule existe dejà
!","Unique","'+$date+'"'
Add-Content -Path $logFilePath -Value $logValue
$countL+=1
}
Write-Host ""
#------------------------------------------------------- #
# Retour au menu
$exit = Read-Host " Retour au menu << (1)Oui (0)Non >>"
#------------------------------------------------------- #
}

# ENREGISTREMENT EN LOT
elseif($action -eq 2)
{
Clear-Host
Write-Output "------------------ -------------------[ENREGISTREMENTMULTIPLE] "

$entry = 0
$success = 0
$filePath = Get-Location
$filePath = "$filePath\newUsers.csv"

Automatisation de la création et mise à jour des comptes AD via PowerShell 70


Import-Csv -Path $filePath -Delimiter ";" -Encoding UTF8 | ForEach-Object{

$entry += 1
# atributs du fichier
: displayName;title;department;company;WWWHomePage;telephoneNumber;;initials;homePhone;pager;description;
givenName;sn

# nom & prénom


$surname = $_.sn
$surname = $surname.TrimEnd()
$GivenName = $_.givenName
$GivenName = $GivenName.TrimEnd()
$Company = $_.company

# Création du login
$samAccountName = Select-login -GivenName $GivenName -surName $surname
if(($samAccountName.Contains("�")) -eq $true)
{
$samAccountName = $samAccountName.replace("�","'")
}
$samAccountName = $samAccountName.ToLower()
$EmailAddress = "$samAccountName"+"@"+"$Company.ci"
$EmailAddress = $EmailAddress.ToLower()
$UserPrincipalName = $EmailAddress
$name = $samAccountName.Replace("."," ")
$name = $name.ToUpper()

# Autres attributs à
renseignés $homePage =
$_.WWWHomePage $EmployeeID =
$homePage $homePhone =
$_.homePhone $Title = $_.title
$Pager = $_.pager
$Initial = $_.initials
$Description = $_.description
# $telephoneNumber =
$_.telephoneNumber $DisplayName =
"$surname $GivenName" $Department =
$_.department $AccountExpirationDate =
$null $acountPassword = "P@ssw0rd21"
$acountPassword = ConvertTo-SecureString $acountPassword -AsPlainText -Force

# verifier si le matricule existe


try{

Automatisation de la création et mise à jour des comptes AD via PowerShell 71


$verifmat = Get-ADUser -Filter {Homepage -eq $homePage}
}
catch{
Write-Warning $($_.exception.message)
}

if(($homePage -eq "POL'EMPLOI") -or ($homePage -eq "CDD") -or ($homePage -eq ""))
{
$verifmat = $null
$AccountExpirationDate = $_.AccountExpirationDate
}
# Write-host $name;

if($verifmat -eq $null)


{
# Creer le compte
try
{
$newUser = New-ADUser -Name $name -GivenName $GivenName -Surname $surname -
UserPrincipalName $UserPrincipalName -EmployeeID $EmployeeID -HomePhone $homePhone -HomePage $homePage -
EmailAddress $EmailAddress -Initials $Initial -DisplayName $DisplayName -Title $Title -Description
$Description -Department $Department -AccountExpirationDate $AccountExpirationDate -AccountPassword
$acountPassword -MobilePhone $telephoneNumber -Company $Company -Path $OU -Enabled $True -
ChangePasswordAtLogon $True -OtherAttributes @{ pager = $Pager}
Write-Host " Utilisateur $samAccountName créer avec succes !"
$success += 1

# Enregistrer dans le log


$date = Get-Date
$logvalue =
'"'+$countL+'","'+$EmployeeID+'","'+$samAccountName+'","Succes","Aucune","Fichier","'+$date+'"'
Add-Content -Path $logFilePath -Value $logvalue
$countL += 1

# Exporter dans un fichiers


$userinfo = '"'+$samAccountName+'","'+$UserPrincipalName+'","'+$EmailAddress+'"' Add-
Content -Path $exportfile -Value $userinfo
}
catch{
$error = $($_.exception.message)
Write-Warning $error

# Enregistrer dans le log


$date = Get-Date

Automatisation de la création et mise à jour des comptes AD via PowerShell 72


$logvalue =
'"'+$countL+'","'+$EmployeeID+'","Aucun","Echec","'+$error+'","Fichier","'+$date+'"'
Add-Content -Path $logFilePath -Value $logvalue
$countL += 1
}
}
else
{
$error = "Le matricule $EmployeeID existe dejà !"
Write-Host $error
# Enregistrer dans le log
$date = Get-Date
$logvalue =
'"'+$countL+'","'+$EmployeeID+'","Aucun","Echec","'+$error+'","Fichier","'+$date+'"'
Add-Content -Path $logFilePath -Value $logvalue
$countL += 1
}
}

$err = $entry - $success


Write-Host "♠ $entry données "
Write-Host "♠ $success comptes enregistrés "
Write-Host "♠ $err erreurs d'enregistrement"
Write-Host ""

#------------------------------------------------------- #
# Retour au menu
$exit = Read-Host " Retour au menu << (1)Oui (0)Non >>"
#------------------------------------------------------- #
}

# VOIR LES LOGS


elseif($action -eq 3)
{
$log | Out-GridView
Write-Host ""

#------------------------------------------------------- #
# Retour au menu
$exit = Read-Host " Retour au menu << (1)Oui (0)Non >>"
#------------------------------------------------------- #
}

# ERREUR DE SAISIE
else{

Automatisation de la création et mise à jour des comptes AD via PowerShell 73


Write-Output " Choix innexistant !"
Write-Host ""

#------------------------------------------------------- #
# Retour au menu
$exit = Read-Host " Retour au menu << (1)Oui (0)Non >>"
#------------------------------------------------------- #
}
}

Start-Sleep -s 15

##########################[DESCRIPTION DU SCRIPT]##########################
# Créer un compte manuellement ou des comptes multiples à partir d'un #
# fichier csv #
###########################################################################
## IBRAHIM DIABAGATE ##
#######################

Automatisation de la création et mise à jour des comptes AD via PowerShell 74


Bibliographie
Ouvrages :
• Active Directory et Windows PowerShell en action de Kaïs AYARI
• Sécurisation de l’Active Directory et d’Azure AD, Enjeux et trajectoires de transformation de
Microsoft
• Active Directory : l'administrer avec PowerShell de Florian SURNEL

• Windows Server 2016, Administrez le serveur et gérez les services Active Directory de Jean-
françois APREA et Nicolas BONNET

Sites Web :
• it-connect : https://www.it-connect.fr/
• Microsoft : https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-
on-windows?view=powershell-7.2

Automatisation de la création et mise à jour des comptes AD via PowerShell 75


Automatisation de la création et mise à jour des comptes AD via PowerShell 76

Vous aimerez peut-être aussi