PowerShell — Administration Windows

Gestion Utilisateurs & Groupes

Active Directory · Scripts automatisés · Boucles & Conditions

01
Création et suppression d'utilisateurs
Menu interactif · Nommage automatique · Boucle for
Instructions
if / elseif switch
Boucles
for
Nommage
Utilisateur1 Utilisateur2
Contraintes mot de passe
CannotChangePassword PasswordNeverExpires
exercice1_utilisateurs.ps1
# ─────────────────────────────────────────────
# Exercice 1 – Création/Suppression d'utilisateurs
# ─────────────────────────────────────────────

do {
    Write-Host "`n===== Gestion des utilisateurs ====="
    Write-Host "1 - Créer des utilisateurs"
    Write-Host "2 - Supprimer des utilisateurs"
    Write-Host "3 - Quitter"

    $choix = Read-Host "Votre choix"

    if ($choix -eq "1") {

        # ── Option 1 : Créer des utilisateurs ──
        $nb = Read-Host "Combien d'utilisateurs créer ?"
        $mdp = ConvertTo-SecureString "P@ssword123!" -AsPlainText -Force

        for ($i = 1; $i -le $nb; $i++) {
            $nom = "Utilisateur$i"

            if (Get-LocalUser -Name $nom -ErrorAction SilentlyContinue) {
                Write-Host "[!] $nom existe déjà." -ForegroundColor Yellow
            } else {
                New-LocalUser -Name $nom -Password $mdp `
                    -PasswordNeverExpires -UserMayNotChangePassword
                Write-Host "[✓] $nom créé avec succès." -ForegroundColor Green
            }
        }

    } elseif ($choix -eq "2") {

        # ── Option 2 : Supprimer des utilisateurs ──
        $nb = Read-Host "Combien d'utilisateurs supprimer ?"

        for ($i = 1; $i -le $nb; $i++) {
            $nom = "Utilisateur$i"

            if (Get-LocalUser -Name $nom -ErrorAction SilentlyContinue) {
                Remove-LocalUser -Name $nom
                Write-Host "[✓] $nom supprimé." -ForegroundColor Green
            } else {
                Write-Host "[!] $nom introuvable." -ForegroundColor Red
            }
        }

    } elseif ($choix -ne "3") {
        Write-Host "[✗] Choix invalide." -ForegroundColor Red
    }

} while ($choix -ne "3")

Write-Host "Au revoir."
Utiliser une instruction if pour gérer le choix du menu.
Utiliser une boucle for pour créer ou supprimer plusieurs utilisateurs.
Les utilisateurs ne peuvent pas modifier leur mot de passe (-UserMayNotChangePassword).
Les mots de passe n'expirent jamais (-PasswordNeverExpires).
Nommage automatique : Utilisateur1, Utilisateur2, Utilisateur3…
02
Gestion de groupes
Vérification d'existence · Nommage automatique · Boucle for
Instructions
if / elseif
Boucles
for
Nommage
Groupe1 Groupe2
Vérification
Get-LocalGroup
exercice2_groupes.ps1
# ─────────────────────────────────────────────
# Exercice 2 – Création/Suppression de groupes
# ─────────────────────────────────────────────

do {
    Write-Host "`n===== Gestion des groupes ====="
    Write-Host "1 - Créer des groupes"
    Write-Host "2 - Supprimer des groupes"
    Write-Host "3 - Quitter"

    $choix = Read-Host "Votre choix"

    if ($choix -eq "1") {

        # ── Option 1 : Créer des groupes ──
        $nb = Read-Host "Combien de groupes créer ?"

        for ($i = 1; $i -le $nb; $i++) {
            $nom = "Groupe$i"

            # Vérification avant création
            if (Get-LocalGroup -Name $nom -ErrorAction SilentlyContinue) {
                Write-Host "[!] Le groupe $nom existe déjà." -ForegroundColor Yellow
            } else {
                New-LocalGroup -Name $nom -Description "Groupe créé automatiquement"
                Write-Host "[✓] Groupe $nom créé avec succès." -ForegroundColor Green
            }
        }

    } elseif ($choix -eq "2") {

        # ── Option 2 : Supprimer des groupes ──
        $nb = Read-Host "Combien de groupes supprimer ?"

        for ($i = 1; $i -le $nb; $i++) {
            $nom = "Groupe$i"

            if (Get-LocalGroup -Name $nom -ErrorAction SilentlyContinue) {
                Remove-LocalGroup -Name $nom
                Write-Host "[✓] Groupe $nom supprimé." -ForegroundColor Green
            } else {
                Write-Host "[!] Groupe $nom introuvable." -ForegroundColor Red
            }
        }

    } elseif ($choix -ne "3") {
        Write-Host "[✗] Choix invalide." -ForegroundColor Red
    }

} while ($choix -ne "3")

Write-Host "Au revoir."
Utiliser une instruction if pour gérer le choix du menu.
Utiliser une boucle for pour créer ou supprimer les groupes.
Avant de créer un groupe, vérifier s'il existe déjà avec Get-LocalGroup.
Afficher un message si le groupe existe déjà.
Nommage automatique : Groupe1, Groupe2, Groupe3…
03
Gestion des utilisateurs et des groupes
Menu 5 options · Affectation Etudiant ↔ Classe · Vérifications complètes
Instructions
if / elseif
Boucles
for
Utilisateurs
Etudiant1 Etudiant2
Groupes
Classe1 Classe2
exercice3_complet.ps1
# ─────────────────────────────────────────────
# Exercice 3 – Gestion Utilisateurs & Groupes
# ─────────────────────────────────────────────

do {
    Write-Host "`n===== Gestion Utilisateurs & Groupes ====="
    Write-Host "1 - Créer des utilisateurs"
    Write-Host "2 - Créer des groupes"
    Write-Host "3 - Ajouter des utilisateurs dans des groupes"
    Write-Host "4 - Retirer des utilisateurs des groupes"
    Write-Host "5 - Quitter"

    $choix = Read-Host "Votre choix"

    # ────────────────────────────────────────────
    # Option 1 – Création des étudiants
    # ────────────────────────────────────────────
    if ($choix -eq "1") {

        $nb  = Read-Host "Combien d'utilisateurs créer ?"
        $mdp = ConvertTo-SecureString "P@ssword123!" -AsPlainText -Force

        for ($i = 1; $i -le $nb; $i++) {
            $nom = "Etudiant$i"

            if (Get-LocalUser -Name $nom -ErrorAction SilentlyContinue) {
                Write-Host "[!] $nom existe déjà." -ForegroundColor Yellow
            } else {
                New-LocalUser -Name $nom -Password $mdp `
                    -PasswordNeverExpires -UserMayNotChangePassword
                Write-Host "[✓] $nom créé avec succès." -ForegroundColor Green
            }
        }

    # ────────────────────────────────────────────
    # Option 2 – Création des classes
    # ────────────────────────────────────────────
    } elseif ($choix -eq "2") {

        $nb = Read-Host "Combien de groupes créer ?"

        for ($i = 1; $i -le $nb; $i++) {
            $nom = "Classe$i"

            if (Get-LocalGroup -Name $nom -ErrorAction SilentlyContinue) {
                Write-Host "[!] Le groupe $nom existe déjà." -ForegroundColor Yellow
            } else {
                New-LocalGroup -Name $nom
                Write-Host "[✓] Groupe $nom créé." -ForegroundColor Green
            }
        }

    # ────────────────────────────────────────────
    # Option 3 – Ajout Etudiant → Classe
    # ────────────────────────────────────────────
    } elseif ($choix -eq "3") {

        $nb = Read-Host "Combien de paires à ajouter (EtudiantX → ClasseX) ?"

        for ($i = 1; $i -le $nb; $i++) {
            $user  = "Etudiant$i"
            $group = "Classe$i"

            $userOk  = Get-LocalUser  -Name $user  -ErrorAction SilentlyContinue
            $groupOk = Get-LocalGroup -Name $group -ErrorAction SilentlyContinue

            if ($userOk -and $groupOk) {
                Add-LocalGroupMember -Group $group -Member $user -ErrorAction SilentlyContinue
                Write-Host "[✓] $user ajouté dans $group." -ForegroundColor Green
            } else {
                if (-not $userOk)  { Write-Host "[✗] Utilisateur $user introuvable."  -ForegroundColor Red }
                if (-not $groupOk) { Write-Host "[✗] Groupe $group introuvable."        -ForegroundColor Red }
            }
        }

    # ────────────────────────────────────────────
    # Option 4 – Retrait Etudiant ← Classe
    # ────────────────────────────────────────────
    } elseif ($choix -eq "4") {

        $nb = Read-Host "Combien de paires à retirer (EtudiantX ← ClasseX) ?"

        for ($i = 1; $i -le $nb; $i++) {
            $user  = "Etudiant$i"
            $group = "Classe$i"

            $userOk  = Get-LocalUser  -Name $user  -ErrorAction SilentlyContinue
            $groupOk = Get-LocalGroup -Name $group -ErrorAction SilentlyContinue

            if ($userOk -and $groupOk) {
                Remove-LocalGroupMember -Group $group -Member $user -ErrorAction SilentlyContinue
                Write-Host "[✓] $user retiré de $group." -ForegroundColor Green
            } else {
                if (-not $userOk)  { Write-Host "[✗] Utilisateur $user introuvable."  -ForegroundColor Red }
                if (-not $groupOk) { Write-Host "[✗] Groupe $group introuvable."        -ForegroundColor Red }
            }
        }

    } elseif ($choix -ne "5") {
        Write-Host "[✗] Choix invalide." -ForegroundColor Red
    }

} while ($choix -ne "5")

Write-Host "Au revoir."
Utiliser des instructions if pour vérifier l'existence des utilisateurs et des groupes avant toute opération.
Utiliser des boucles for pour les créations, les ajouts et les suppressions.
Les utilisateurs ne peuvent pas modifier leur mot de passe et les mots de passe n'expirent jamais.
Afficher un message indiquant si l'opération a réussi (vert) ou échoué (rouge).
Correspondance automatique : Etudiant1 → Classe1, Etudiant2 → Classe2