From 97d051019e78a578b81ec9ca1b73eea3a802e79e Mon Sep 17 00:00:00 2001 From: 7ka1 <7ka1@noreply.localhost> Date: Thu, 15 Jan 2026 13:55:58 +0000 Subject: [PATCH] Ajouter move_expired_users.ps1 --- move_expired_users.ps1 | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 move_expired_users.ps1 diff --git a/move_expired_users.ps1 b/move_expired_users.ps1 new file mode 100644 index 0000000..7cf7ad4 --- /dev/null +++ b/move_expired_users.ps1 @@ -0,0 +1,38 @@ +<# +.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) : $_" + } + } +} \ No newline at end of file