Téléverser les fichiers vers "/"
This commit is contained in:
77
move_expired_users.ps1
Normal file
77
move_expired_users.ps1
Normal 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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user