L'interface graphique (GUI) est rassurante, mais elle n'est pas scalable. Imaginez devoir créer 50 nouveaux comptes stagiaires pour lundi matin. À la souris, c'est 2 heures de travail et des erreurs de saisie. Avec PowerShell, c'est un script de 10 lignes et 30 secondes d'exécution.
1. Prérequis : Le module Active Directory
Sur un contrôleur de domaine, le module est chargé par défaut. Sur votre PC d'administration (Windows 10/11), vous devez installer les outils RSAT (Remote Server Administration Tools).
# Vérifier si le module est disponible
Get-Module -ListAvailable ActiveDirectory
2. Les Verbes et la Syntaxe
PowerShell fonctionne sur une logique Verbe-Nom. C'est très intuitif :
Get-ADUser: Récupérer des infos.New-ADUser: Créer.Set-ADUser: Modifier.Remove-ADUser: Supprimer.
La commande vitale : Get-Help
Ne mémorisez pas tout. Apprenez à chercher :
# Affiche des exemples concrets d'utilisation
Get-Help New-ADUser -Examples
3. Cas Pratique : Création d'utilisateurs en masse (Bulk)
Scénario : Les RH vous envoient un fichier nouveaux_employes.csv :
Prenom,Nom,Service
Jean,Dupont,Compta
Marie,Curie,R&D
Pierre,Martin,Marketing
Voici le script pour créer ces comptes automatiquement, les placer dans la bonne OU (Unité d'Organisation) et générer un mot de passe temporaire.
# Import du CSV
$Users = Import-Csv "C:\Temp\nouveaux_employes.csv"
# Boucle sur chaque ligne
foreach ($User in $Users) {
# Création du login (ex: j.dupont)
$SamAccountName = ($User.Prenom.Substring(0,1) + "." + $User.Nom).ToLower()
# Définition du chemin LDAP (OU)
$OU = "OU=" + $User.Service + ",DC=corp,DC=lml-info,DC=local"
# Mot de passe par défaut sécurisé (Converti en SecureString)
$Password = ConvertTo-SecureString "ChangeMe123!" -AsPlainText -Force
try {
New-ADUser -Name "$($User.Prenom) $($User.Nom)" `
-GivenName $User.Prenom `
-Surname $User.Nom `
-SamAccountName $SamAccountName `
-UserPrincipalName "$SamAccountName@corp.lml-info.local" `
-Path $OU `
-AccountPassword $Password `
-Enabled $true `
-ChangePasswordAtLogon $true `
-ErrorAction Stop
Write-Host "[OK] Utilisateur $SamAccountName créé." -ForegroundColor Green
}
catch {
Write-Host "[ERREUR] Impossible de créer $SamAccountName : $_" -ForegroundColor Red
}
}
4. La sécurité avant tout : -WhatIf
C'est la différence entre un amateur et un pro. Avant de lancer un script qui supprime ou modifie 1000 comptes, utilisez TOUJOURS le paramètre -WhatIf.
# Test sans risque
Remove-ADUser -Identity "j.dupont" -WhatIf
Résultat : "What if: Performing the operation 'Remove' on target 'CN=Jean Dupont,OU=Compta...'."
PowerShell vous dit ce qu'il aurait fait, sans le faire.
5. Reporting (Export CSV)
Votre patron vous demande : "Liste-moi tous les comptes désactivés du domaine". En GUI, c'est l'enfer. En PowerShell :
Get-ADUser -Filter {Enabled -eq $false} -Properties LastLogonDate |
Select-Object Name, SamAccountName, LastLogonDate |
Export-Csv -Path "C:\Temp\desactives.csv" -NoTypeInformation
Conclusion
PowerShell est un super-pouvoir. Il permet non seulement de gagner du temps, mais aussi d'assurer la consistance (les comptes sont toujours créés exactement de la même façon). Commencez petit, testez avec -WhatIf, et automatisez progressivement.