Import-Module ActiveDirectory $domainDN = (Get-ADDomain).DistinguishedName $retiredOU = "OU=Retired,$domainDN" Write-Host "--- Déplacement des comptes expirés ---" -ForegroundColor Cyan # 1. Vérification / Création de l'OU if (-not (Get-ADOrganizationalUnit -Filter "Name -eq 'Retired'")) { try { New-ADOrganizationalUnit -Name "Retired" -Path $domainDN -ErrorAction Stop Write-Host "[OK] OU 'Retired' créée." -ForegroundColor Green } catch { Write-Host "[ERREUR] Droit refusé pour créer l'OU. Utilisez 'Exécuter en tant qu'administrateur'." -ForegroundColor Red return } } # 2. Recherche des utilisateurs expirés $today = Get-Date # Note : on utilise des guillemets simples ' ' pour le filtre AD $expiredUsers = Get-ADUser -Filter 'AccountExpirationDate -lt $today' -Properties AccountExpirationDate if ($expiredUsers) { Write-Host "$($expiredUsers.Count) utilisateur(s) trouvé(s)." -ForegroundColor White foreach ($user in $expiredUsers) { try { Move-ADObject -Identity $user.DistinguishedName -TargetPath $retiredOU -ErrorAction Stop Write-Host "[MOVE] $($user.SamAccountName) déplacé vers Retired." -ForegroundColor Yellow } catch { Write-Host "[ERREUR] Impossible de déplacer $($user.SamAccountName) : $($_.Exception.Message)" -ForegroundColor Red } } } else { Write-Host "Aucun utilisateur expiré trouvé." -ForegroundColor Gray }