PowerShell
Automatiser la gestion des utilisateurs AD avec PowerShell

Automatiser la gestion des utilisateurs AD avec PowerShell

Introduction

La gestion manuelle des comptes utilisateurs Active Directory est chronophage et source d'erreurs. PowerShell couplé au module RSAT ActiveDirectory permet d'automatiser ces tâches répétitives et de les industrialiser.

Prérequis

# Installer RSAT sur Windows Server
Install-WindowsFeature RSAT-AD-PowerShell

# Sur Windows 10/11
Add-WindowsCapability -Online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

# Importer le module
Import-Module ActiveDirectory

Créer un utilisateur

New-ADUser `
  -Name "Jean Dupont" `
  -GivenName "Jean" `
  -Surname "Dupont" `
  -SamAccountName "jdupont" `
  -UserPrincipalName "jdupont@contoso.com" `
  -Path "OU=Utilisateurs,OU=Paris,DC=contoso,DC=com" `
  -AccountPassword (ConvertTo-SecureString "P@ssw0rd!2026" -AsPlainText -Force) `
  -ChangePasswordAtLogon $true `
  -Enabled $true `
  -Department "Informatique" `
  -Title "Administrateur Système" `
  -Company "Contoso"

Création en masse depuis un CSV

# Format CSV : Prenom;Nom;Departement;OU
# Pierre;Martin;Finance;OU=Finance,DC=contoso,DC=com

$users = Import-Csv -Path "C:Scripts
ouveaux_utilisateurs.csv" -Delimiter ";"

foreach ($user in $users) {
    $samAccount = ($user.Prenom[0] + $user.Nom).ToLower() -replace "[^a-z0-9]", ""
    $upn        = "$samAccount@contoso.com"
    $fullName   = "$($user.Prenom) $($user.Nom)"

    New-ADUser `
      -Name $fullName `
      -GivenName $user.Prenom `
      -Surname $user.Nom `
      -SamAccountName $samAccount `
      -UserPrincipalName $upn `
      -Path $user.OU `
      -AccountPassword (ConvertTo-SecureString "Azerty@2026!" -AsPlainText -Force) `
      -ChangePasswordAtLogon $true `
      -Enabled $true `
      -Department $user.Departement

    Write-Host "[OK] $fullName créé ($samAccount)" -ForegroundColor Green
}

Désactiver les comptes inactifs

# Désactiver les comptes sans connexion depuis 90 jours
$cutoff = (Get-Date).AddDays(-90)

Get-ADUser -Filter {LastLogonDate -lt $cutoff -and Enabled -eq $true} `
  -Properties LastLogonDate |
  Where-Object { $_.DistinguishedName -notlike "*OU=ServiceAccounts*" } |
  ForEach-Object {
    Disable-ADAccount -Identity $_
    Move-ADObject -Identity $_ -TargetPath "OU=ComptesDésactivés,DC=contoso,DC=com"
    Write-Host "[DÉSACTIVÉ] $($_.SamAccountName) — Dernier logon : $($_.LastLogonDate)"
  }

Exporter les membres d'un groupe

$groupe = "GRP-VPN-Acces"
Get-ADGroupMember -Identity $groupe -Recursive |
  Get-ADUser -Properties DisplayName, Department, LastLogonDate, Mail |
  Select-Object Name, SamAccountName, Department, Mail, LastLogonDate |
  Export-Csv -Path "C:RapportsMembres-$groupe.csv" -NoTypeInformation -Encoding UTF8

Write-Host "Rapport exporté : C:RapportsMembres-$groupe.csv"

Conclusion

Ces scripts illustrent la puissance de PowerShell pour automatiser l'administration AD. En transformant ces exemples en fonctions réutilisables et planifiées via le Planificateur de tâches, vous construirez une véritable usine d'automatisation IT.

MAKHZOUM Hussein
Auteur
MAKHZOUM Hussein
Consultant Cloud & Infrastructure Engineer
Voir le profil

Articles similaires