31 lines
1.3 KiB
PowerShell
31 lines
1.3 KiB
PowerShell
Import-Module ActiveDirectory
|
|
|
|
# 1. Définir la date d'expiration à HIER (expiration immédiate)
|
|
$yesterday = (Get-Date).AddDays(-1)
|
|
|
|
Write-Host "--- Mise à jour Expiration : Licenciement Production/Assembler ---" -ForegroundColor Red
|
|
Write-Host "Date d'expiration fixée au : $($yesterday.ToShortDateString())" -ForegroundColor Gray
|
|
|
|
# 2. Cibler le Département Production et le Titre Assembler
|
|
$dept = "Production"
|
|
$job = "Assembler"
|
|
|
|
# Note : J'inclus 'Description' dans le filtre par sécurité au cas où le champ 'Title' serait vide
|
|
$users = Get-ADUser -Filter "Department -eq '$dept' -and (Title -eq '$job' -or Description -eq '$job')" -Properties Department, Title, Description
|
|
|
|
if ($users) {
|
|
Write-Host "$($users.Count) employés identifiés pour le départ." -ForegroundColor White
|
|
|
|
foreach ($u in $users) {
|
|
try {
|
|
# Application de la nouvelle date
|
|
Set-ADAccountExpiration -Identity $u.SamAccountName -DateTime $yesterday -ErrorAction Stop
|
|
|
|
Write-Host "[EXPIRÉ] Compte désactivé pour : $($u.Name)" -ForegroundColor Yellow
|
|
} catch {
|
|
Write-Host "[ERREUR] Échec sur $($u.Name) : $($_.Exception.Message)" -ForegroundColor DarkRed
|
|
}
|
|
}
|
|
} else {
|
|
Write-Host "Aucun utilisateur correspondant trouvé ($dept - $job)." -ForegroundColor Green
|
|
} |