<# .SYNOPSIS Déplace les utilisateurs expirés vers l'OU 'Retired'. .DESCRIPTION Vérifie/Crée l'OU Retired. Identifie les comptes dont la date d'expiration est passée. Déplace ces comptes vers l'OU Retired. .NOTES Nom du script : move_expired_users.ps1 #> $DomainDN = (Get-ADDomain).DistinguishedName $RetiredOUName = "Retired" $RetiredOUPath = "OU=$RetiredOUName,$DomainDN" # 1. Vérification et Création de l'OU Retired if (-not (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$RetiredOUPath'")) { Write-Host "L'OU '$RetiredOUName' n'existe pas. Création en cours..." -ForegroundColor Yellow New-ADOrganizationalUnit -Name $RetiredOUName -Path $DomainDN } # 2. Identification des comptes expirés $CurrentDate = Get-Date # Le filtre vérifie que la date est inférieure à maintenant ET qu'elle n'est pas nulle $ExpiredUsers = Get-ADUser -Filter {AccountExpirationDate -lt $CurrentDate -and AccountExpirationDate -ne $null} -Properties AccountExpirationDate # 3. Déplacement foreach ($User in $ExpiredUsers) { # Vérifie si l'utilisateur est déjà dans la bonne OU pour éviter une erreur if ($User.DistinguishedName -notlike "*$RetiredOUPath") { try { Move-ADObject -Identity $User -TargetPath $RetiredOUPath -ErrorAction Stop Write-Host "Utilisateur archivé : $($User.Name)" -ForegroundColor Green } catch { Write-Error "Impossible de déplacer $($User.Name) : $_" } } }