Création des utilisateurs en PowerShell

Création des utilisateurs en PowerShell
PRÉSENTATION

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

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

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

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

TECHNOLOGIES

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:\ :

Arborescence.png

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

Ressources à télécharger

Employé.txt

txt1.38 Ko
Commentaires(0)
Chargement des commentaires...

Ajouter un commentaire