Ajouter move_expired_users.ps1
This commit is contained in:
38
move_expired_users.ps1
Normal file
38
move_expired_users.ps1
Normal file
@@ -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) : $_"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user