Files
Scripts-Pack-Epsic-122/move_expired_users.ps1

36 lines
1.5 KiB
PowerShell

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
}