36 lines
1.5 KiB
PowerShell
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
|
|
} |