Files
moveexpirieduser/move_expired_users.ps1
2026-01-15 13:55:58 +00:00

38 lines
1.5 KiB
PowerShell

<#
.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) : $_"
}
}
}