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