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.