Téléverser les fichiers vers "/"

This commit is contained in:
2025-11-20 15:25:54 +00:00
commit e8fde7102f

77
move_expired_users.ps1 Normal file
View File

@@ -0,0 +1,77 @@
# -----------------------------------------------------------
# Script : move_expired_users.ps1
# Description : Déplace les utilisateurs dont le compte est expiré
# vers l'OU "Retired". Crée l'OU si elle n'existe pas.
# -----------------------------------------------------------
# --- CONFIGURATION ---
# Nom de l'OU de destination
$TargetOUName = "Retired"
# Base du domaine (À ADAPTER : ex: DC=happykoalas,DC=com)
$DomainDN = "DC=happykoalas,DC=com"
# Construction du chemin complet (Distinguished Name) de l'OU cible
$TargetOUDN = "OU=$TargetOUName,$DomainDN"
# Date et heure actuelles pour la comparaison
$CurrentDate = Get-Date
# --- IMPORTATION MODULE ---
Import-Module ActiveDirectory
# --- ETAPE 1 : GESTION DE L'OU "RETIRED" ---
Write-Host "Vérification de l'OU '$TargetOUName'..." -ForegroundColor Cyan
try {
if (-not (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$TargetOUDN'" -ErrorAction SilentlyContinue)) {
Write-Host "L'OU '$TargetOUName' n'existe pas. Création en cours..." -ForegroundColor Yellow
New-ADOrganizationalUnit -Name $TargetOUName -Path $DomainDN
Write-Host "OU créée avec succès." -ForegroundColor Green
} else {
Write-Host "L'OU '$TargetOUName' existe déjà." -ForegroundColor Green
}
}
catch {
Write-Host "Erreur critique lors de la gestion de l'OU : $_" -ForegroundColor Red
Exit # On arrête le script si on ne peut pas gérer l'OU de destination
}
# --- ETAPE 2 : RECHERCHE ET DÉPLACEMENT DES UTILISATEURS ---
Write-Host "`nRecherche des utilisateurs expirés..." -ForegroundColor Cyan
# Recherche des utilisateurs dont la date d'expiration est inférieure à la date actuelle
# On exclut les comptes sans date d'expiration (qui valent souvent NULL ou 0)
$ExpiredUsers = Get-ADUser -Filter {AccountExpirationDate -lt $CurrentDate -and AccountExpirationDate -ne $null} -Properties AccountExpirationDate, DistinguishedName
if ($ExpiredUsers) {
$Count = 0
foreach ($User in $ExpiredUsers) {
try {
# Vérification : on ne déplace pas l'utilisateur s'il est déjà dans la bonne OU
if ($User.DistinguishedName -notlike "*$TargetOUDN") {
# Déplacement de l'objet
Move-ADObject -Identity $User -TargetPath $TargetOUDN -ErrorAction Stop
Write-Host "Utilisateur déplacé : $($User.Name) (Expiré le $($User.AccountExpirationDate))" -ForegroundColor Yellow
$Count++
}
else {
Write-Host "Utilisateur $($User.Name) est déjà dans l'OU Retired." -ForegroundColor DarkGray
}
}
catch {
Write-Host "Impossible de déplacer $($User.Name) : $_" -ForegroundColor Red
}
}
if ($Count -gt 0) {
Write-Host "`nTerminé. $Count utilisateur(s) déplacé(s) vers '$TargetOUName'." -ForegroundColor Green
} else {
Write-Host "`nAucun utilisateur n'avait besoin d'être déplacé." -ForegroundColor Green
}
}
else {
Write-Host "Aucun utilisateur expiré trouvé." -ForegroundColor Gray
}