38 lines
1.5 KiB
PowerShell
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) : $_"
|
|
}
|
|
}
|
|
} |