Création des utilisateurs en PowerShell

Contexte et Situation
L'entreprise CESISSEZ est une société en pleine croissance comptant vingt-deux collaborateurs répartis sur sept services (Direction, Ressources Humaines, Finance, Commercial, Logistique, Marketing et Informatique). Dans le cadre de sa transformation numérique, la direction a décidé de moderniser son infrastructure informatique en déployant un environnement Active Directory centralisé permettant une gestion efficace des utilisateurs, des groupes et des accès aux ressources partagées.
Le contexte de travail de l'administrateur
Vous êtes Technicien Supérieur Systèmes et Réseaux au sein du service informatique de CESISSEZ. Vous travaillez sous la supervision d'Anthony Pacaut, le responsable du service informatique, et en collaboration avec Aaron Scott, l'administrateur systèmes et réseaux.
Un prestataire externe a déjà mis en place l'infrastructure de base :
- Un domaine Active Directory fonctionnel
- Une structure de dossiers dans E:\Partages
- Des groupes Active Directory de sécurité
- Des partages réseau configurés
Votre mission consiste à finaliser le déploiement en créant l'ensemble des comptes utilisateurs de l'entreprise et en validant le bon fonctionnement de l'infrastructure complète.
Architecture du TP
Ce travail pratique vous permet de mettre en œuvre vos compétences en automatisation PowerShell pour provisionner les utilisateurs d'une entreprise.
Vous devrez :
Créer des scripts PowerShell automatisés
Provisionner les vingt-deux utilisateurs de l'entreprise depuis un fichier CSV
Configurer leurs dossiers personnels et leurs accès
Générer des rapports d'audit
Valider le fonctionnement depuis un poste client
Apports métier de cette architecture
Pour l'entreprise :
Centralisation de la gestion des identités et des accès
Sécurité renforcée grâce au modèle AGDLP (Account Global Domain Local Permission)
Traçabilité complète des opérations via les logs
Facilité d'évolution : ajout/modification/suppression d'utilisateurs simplifiée
Pour l'administrateur :
Automatisation réduisant le temps de provisionnement de plusieurs heures à quelques minutes
Réduction drastique des erreurs humaines
Homogénéité des configurations
Scripts réutilisables pour les futurs recrutements
Bénéfices opérationnels :
Séparation claire entre espaces partagés par service et espaces personnels
Chaque utilisateur accède uniquement aux ressources dont il a besoin
Le modèle AGDLP facilite les réorganisations futures
Les rapports d'audit permettent le contrôle de conformité
Objectifs Pédagogiques
Connaissances théoriques mobilisées
Architecture Active Directory (utilisateurs, groupes, unités organisationnelles)
Modèle AGDLP (Account Global Domain Local Permission)
Différence entre groupes Global, Domain Local et Universal
Permissions NTFS vs permissions de partage SMB
Formats de données structurées (CSV, XML)
Principes de scripting robuste (gestion d'erreurs, journalisation, validation)
Compétences techniques mises en œuvre
PowerShell - Module ActiveDirectory :
New-ADUser : Création de comptes utilisateurs
Set-ADUser : Modification des propriétés utilisateurs
Get-ADUser : Interrogation des comptes
Add-ADGroupMember : Ajout dans les groupes
Get-ADGroup, Get-ADGroupMember : Gestion des groupes
PowerShell - Gestion de fichiers :
Import-Csv, Export-Csv : Manipulation de données CSV
New-Item, Test-Path : Création et vérification de dossiers
Get-Acl, Set-Acl : Gestion des permissions NTFS
Get-ChildItem : Navigation dans le système de fichiers
PowerShell - Module SmbShare :
New-SmbShare : Création de partages réseau
Get-SmbShare : Liste des partages
Grant-SmbShareAccess : Gestion des permissions de partage
Développement de scripts :
Structuration du code avec fonctions réutilisables
Gestion des erreurs avec try-catch-finally
Validation des données en entrée
Journalisation (logging) des opérations
Documentation intégrée (comment-based help)
Compétences transversales développées
Rigueur et souci du détail : Une erreur dans les permissions peut avoir des conséquences sécuritaires
Analyse et résolution de problèmes : Diagnostic des erreurs PowerShell
Documentation : Production de rapports exploitables
Autonomie : Gestion d'un projet de bout en bout
Sécurité informatique : Application du principe de moindre privilège
Workflow
Phase 0 : Découverte de l'infrastructure existante
Objectif : Comprendre l'environnement dans lequel vous allez travailler.
Étape 1 : Connexion au serveur
Connectez-vous au serveur Windows Server 2022 avec le compte administrateur fourni
Ouvrez PowerShell ISE en mode administrateur (clic droit > Exécuter en tant qu'administrateur)
Étape 2 : Découverte de la structure Active Directory
Exécutez ces commandes pour explorer l'AD :
Obtenir les informations du domaine
Get-ADDomain | Select-Object DNSRoot, NetBIOSName
Lister les groupes globaux (GG_Service_*)
Get-ADGroup -Filter "Name -like 'GG_Service_*'" | Select-Object Name | Sort-Object Name
Lister les groupes domain local (DL_Partage_*)
Get-ADGroup -Filter "Name -like 'DL_Partage_*'" | Select-Object Name | Sort-Object Name
Vérifier la structure AGDLP pour le service Finance
Get-ADGroupMember -Identity "DL_Partage_Finance" | Select-Object Name, objectClass
Validation :
Vous devez voir 7 groupes GG_Service_*
Vous devez voir 7 groupes DL_Partage_*
Chaque groupe DL_Partage_X doit contenir le groupe GG_Service_X correspondant
Étape 3 : Découverte de la structure de dossiers
Afficher l'arborescence des partages
Get-ChildItem E:\Partages -Directory
Afficher le contenu d'un service (exemple: Finance)
Get-ChildItem E:\Partages\Finance -Recurse -Directory
Validation :
E:\Partages contient 7 dossiers (un par service)
Chaque service contient 3 sous-dossiers : Documents, Archives, Temp
Étape 4 : Découverte des partages réseau
Lister les partages (hors partages système)
Get-SmbShare | Where-Object { $_.Special -eq $false } | Format-Table Name, Path
Voir les permissions d'un partage
Get-SmbShareAccess -Name "Finance"
Validation :
7 partages existent (Direction, RH, Finance, Commercial, Logistique, Marketing, Informatique)
Everyone a Full Control sur les partages
Phase 1 : Préparation des données utilisateurs
**Objectif ** : Adapter le fichier CSV à votre cas personnel et valider son contenu.
Étape 1 : Sauvegarde et personnalisation du CSV
Créer une copie de sauvegarde
Copy-Item "E:\Utilisateurs_Modele.csv" "E:\Utilisateurs_Modele_Backup.csv"
Ouvrir le fichier pour modification
notepad "E:\Utilisateurs_Modele.csv"
Action :
Localisez la ligne 22 (celle avec "Vous;Vous;Informatique;...")
Remplacez "Vous" par votre véritable prénom
Remplacez "Vous" par votre véritable nom
Remplacez "à définir" par un login au format prenom.nom (tout en minuscules)
Exemple : Si vous vous appelez Marie Durand : Login = m.durand
Sauvegardez le fichier (Encodage UTF-8)
Phase 2 : Création du script de provisionnement utilisateur
Objectif : Développer une fonction PowerShell robuste pour créer un utilisateur AD complet.
Étape 1 : Créer le fichier de script
Créez un nouveau fichier E:\Scripts\New-ADUserComplet.ps1
pour cet usage
.\New-ADUserComplet.ps1 -Prenom "Jean" -Nom "Dupont" -Login "j.dupont" -Service "Finance" -Fonction "Comptable"
Objectif :
L'utilisateur existe dans AD
Il est membre du groupe GG_ lié à son service
Son dossier existe dans E:\PartagesPersonnels
Un partage caché t.test$ est créé
Les propriétés HomeDrive et HomeDirectory sont définies
Étape 2 : Tester la fonction avec un utilisateur de test
Exécuter le script pour créer un utilisateur de test
.\New-ADUserComplet.ps1 -Prenom "Test" -Nom "Utilisateur" -Login "t.test" -Service "Informatique" -Fonction "Testeur"
Étape 4 : Vérifier la création
Vérifier dans AD
Get-ADUser -Identity "t.test" -Properties *
Vérifier le groupe
Get-ADGroupMember -Identity "GG_Service_Informatique" | Where-Object { $_.SamAccountName -eq "t.test" }
Vérifier le dossier
Test-Path "E:\PartagesPersonnels\t.test"
Vérifier le partage
Get-SmbShare -Name "t.test$"
Vérifier le mapping
Get-ADUser -Identity "t.test" -Properties HomeDrive, HomeDirectory | Select-Object SamAccountName, HomeDrive, HomeDirectory
Validation :
L'utilisateur existe dans AD
Il est membre du groupe GG_Service_Informatique
Son dossier existe dans E:\PartagesPersonnels
Un partage caché t.test$ est créé
Les propriétés HomeDrive et HomeDirectory sont définies
Livrable 1 (partiel) : Ce script constitue une partie du livrable 1
Phase 3 : Création en masse depuis CSV
Objectif : Créer tous les utilisateurs automatiquement depuis le fichier CSV.
Étape 1 : Créer le script de création en masse
Créez le fichier E:\Scripts\Creation-Masse-CSV.ps1 :
Exécuter :
.\Export-Partages.ps1
Livrable 6 : Le fichier texte généré (ex: Liste_Partages_20241208_144000.txt)
Phase 4 : Test fonctionnel depuis un poste Windows 10
Objectif : Valider le bon fonctionnement et générer le livrable 7 (capture d'écran).
Étape 1 : Se connecter au poste Windows 10
Redémarrez le poste client Windows 10
À l'écran de connexion, sélectionnez "Autre utilisateur"
Saisissez : DOMAINE\votre.login (remplacez DOMAINE par le nom NetBIOS de votre domaine, ex: CESI\m.durand)
Mot de passe : P@ssw0rd2024!
Le système vous demandera de changer le mot de passe (ChangePasswordAtLogon = True)
Choisissez un nouveau mot de passe complexe
Étape 2 : Vérifier le mapping automatique du lecteur Z:
Ouvrez l'Explorateur de fichiers (Win + E)
Dans le volet de gauche, vous devez voir un lecteur "Z:"
Cliquez sur Z: pour l'ouvrir
Il doit pointer vers \NomServeur\votre.login$
Le dossier est vide (normal, il vient d'être créé)
Étape 3 : Tester l'écriture dans le lecteur Z:
Dans Z:, faites un clic droit > Nouveau > Document texte
Nommez-le Test_Acces.txt
Ouvrez-le et écrivez :
Test d'accès réussi au dossier personnel
Date : [Date et heure actuelles]Utilisateur : [Votre nom]
Sauvegardez et fermez
Étape 4 : Tester l'accès au partage de votre service
Appuyez sur Win + R
Tapez : \NomServeur\Informatique (remplacez NomServeur par le nom de votre serveur)
Vous devez voir les dossiers Documents, Archives, Temp
Essayez de créer un fichier dans Documents pour vérifier les droits en écriture
Étape 5 : Tester le refus d'accès aux autres services
Appuyez sur Win + R
Tapez : \NomServeur\Finance
Vous devez avoir un message "Accès refusé" ou une demande d'identifiants
Cela confirme que les permissions fonctionnent correctement
Étape 6 : Prendre la capture d'écran (Livrable 7)
Revenez sur le lecteur Z: dans l'Explorateur
Arrangez la fenêtre pour que soient visibles :
▪ Le nom d'utilisateur en haut à droite
▪ Le lecteur Z: dans la liste des lecteurs
▪ Le chemin UNC dans la barre d'adresse (\NomServeur\votre.login$)
▪ Le fichier Test_Acces.txt que vous avez créé
Appuyez sur Win + Impr écran (ou utilisez l'Outil Capture d'écran)
Sauvegardez l'image sous le nom Livrable_7_Capture_Acces_Partage.png
Étape 7 : Vérification côté serveur
Retournez sur le serveur
Ouvrez l'Explorateur et naviguez vers E:\PartagesPersonnels\votre.login
Vous devez voir le fichier Test_Acces.txt
Ouvrez-le pour confirmer son contenu
Validation :
Connexion au domaine réussie
Lecteur Z: automatiquement mappé
Création de fichier possible dans Z:
Accès au partage du service autorisé
Accès aux autres partages refusé
Le fichier créé sur le client est visible sur le serveur
Livrable : La capture d'écran Livrable_7_Capture_Acces_Partage.png
Choix Technologiques
Présentation technique de l'infrastructure
L'infrastructure mise à votre disposition repose sur plusieurs composants :
Serveur Windows Server 2022 avec les rôles suivants :
Active Directory Domain Services (contrôleur de domaine)
DNS Server (résolution de noms)
File Server (partage de fichiers SMB)
Structure Active Directory :
Domaine : xx.lab (où xx représente vos initiales)
Unités Organisationnelles (OU) par service
Groupes de sécurité pré-créés selon le modèle AGDLP :
Groupes Globaux : GG_Service_[NomService] (ex: GG_Service_Finance)
Groupes Domain Local : DL_Partage_[NomService] (ex: DL_Partage_Finance)
Liaison : GG_Service_X est membre de DL_Partage_X
Structure de stockage sur le lecteur E:\ :

Partages réseau SMB :
Un partage par service (\Serveur\Direction, \Serveur\RH, etc.)
Permissions de partage : Everyone = Full Control
Sécurité gérée par les permissions NTFS via les groupes DL
Postes clients :
Windows 11 Professionnel joints au domaine
Configuration réseau automatique via DHCP ou IP statique
Infrastructure matérielle et virtuelle :
Hyperviseur : Microsoft Hyper-V Manager
Intégré à Windows Server 2022
Performances optimales
Gestion simplifiée
Machine Virtuelle Serveur :
OS : Windows Server 2022 Standard (Desktop Experience)
vCPU : 4 processeurs virtuels
RAM : 8 Go
Disque C: : 60 Go (système)
Disque E: : 50 Go (données)
Réseau : Commutateur virtuel interne
IP statique : 192.168.100.10/24
Machine Virtuelle Client :
OS : Windows 10 Professionnel
vCPU : 2 processeurs virtuels
RAM : 4 Go
Disque : 40 Go
Réseau : Même commutateur virtuel interne que le serveur
IP : Automatique (DHCP) ou statique dans la plage 192.168.100.0/24
Réseau :
Commutateur virtuel interne isolé
Pas de connexion Internet nécessaire
Communication serveur-client uniquement
Configuration logicielle serveur
Rôles et fonctionnalités installés :
Active Directory Domain Services (AD DS)
DNS Server
File and Storage Services > File Server
RSAT (Remote Server Administration Tools)
Domaine Active Directory :
Nom : xx.lab (où xx = initiales de l'apprenant)
Niveau fonctionnel : Windows Server 2016 minimum
Contrôleur de domaine : Le serveur lui-même
Modules PowerShell requis :
ActiveDirectory (version 1.0.1.0 ou supérieure)
SmbShare (intégré)
ServerManager
Politique d'exécution PowerShell :
Configurée en RemoteSigned au niveau LocalMachine
Permet l'exécution de scripts locaux
Stratégies de mot de passe :
Complexité activée
Longueur minimale : 8 caractères
Historique : 24 mots de passe
Durée max : 42 jours
Configuration logicielle client :
Windows 10 Professionnel
Joint au domaine xx.lab
Compte ordinateur créé dans l'AD
Stratégies de groupe appliquées
Configuration réseau :
DNS primaire : IP du serveur (192.168.100.10)
Domaine DNS : xx.lab
Groupe de travail : Remplacé par le domaine
Outils de développement :
PowerShell ISE
Version 5.1 (minimum)
Éditeur de scripts intégré
Console PowerShell intégrée
Coloration syntaxique
Autocomplétion
Alternative recommandée : Visual Studio Code
Extension PowerShell
Meilleure expérience de développement
Debugging avancé
Intégration Git
Format des fichiers :
Scripts : .ps1 (PowerShell Script)
CSV : Encodage UTF-8, séparateur point-virgule (;)
Logs : .txt ou .log, encodage UTF-8
Standards et conventions :
Nommage PowerShell
Fonctions : Verbe-Nom (ex: New-ADUserComplet)
Verbes approuvés : Get, Set, New, Remove, Add, Test, etc.
PascalCase pour les fonctions
Nommage Active Directory
Groupes Globaux : GG_Service_[Nom]
Groupes Domain Local : DL_Partage_[Nom]
Logins utilisateurs : prenom.nom (minuscules)
Nommage fichiers
Scripts : Action-Objet.ps1 (ex: Creation-Utilisateurs-Masse.ps1)
Rapports : Type_Objet_DateHeure.txt
Archives : TP_Final_Initiales_DateHeure.zip
Documentation code
Comment-Based Help obligatoire
Sections : SYNOPSIS, DESCRIPTION, PARAMETER, EXAMPLE, NOTES
Commentaires inline pour logique complexe
Ressources à télécharger
Employé.txt