PowerShell - Active Directory - Désactiver automatiquement les comptes expirés
Active Directory dispose de la capacité de définir une date d'expiration sur les comptes de sorte que le compte devienne inactif et ne puisse plus être accédé/connecté une fois que cette date est passée.
Le problème avec ce fonctionnement est qu'en théorie, le compte est toujours "activé" - car il n'est pas réellement "désactivé" - il est simplement expiré. Les comptes désactivés peuvent facilement être identifiés dans Active Directory Users & Computers par une icône légèrement différente à côté du nom du compte. Cependant, les comptes expirés n'ont aucune indication visuelle qu'ils sont expirés, ce qui les rend plus difficiles à identifier.
Voici un script rapide PowerShell que l'on peut lancer quotidiennement pour désactiver tous les comptes Active Directory qui ont expiré.
# Saisir l'unité organisationnelle (OU)
$Target = "OU=Disabled,OU=Accounts,DC=Labo,DC=local"
# Obtenir la liste des utilisateurs dont le compte est expiré et encore activé
$expiredusers = Get-ADUser -Filter { enabled -eq $true -and accountexpirationdate -like "*" } -Properties accountexpirationdate |
Where-Object {
($_.AccountExpirationDate -lt $(Get-Date)) -and # Date d'expiration passée
($_.AccountExpirationDate -ne $null) -and # Date d'expiration non nulle
($_.Enabled -eq $true) # Compte toujours activé
}
# Pour chaque utilisateur dont le compte est expiré
ForEach ($user in $expiredusers) {
# Désactiver le compte de l'utilisateur
Set-ADUser -Identity $($user.SamAccountName) -Enabled $false -WhatIf
# Déplacer l'objet utilisateur dans l'unité organisationnelle (OU) "Disabled"
Move-ADObject -Identity $($user.DistinguishedName) -TargetPath $Target -WhatIf
}
Dans ce script, on va effectuer les actions suivantes :
- Il recherche les utilisateurs dont le compte est activé, la date d'expiration du compte est renseignée, mais la date d'expiration est passée et le compte est toujours activé.
- Pour chaque utilisateur qui répond à ces critères, le script désactive le compte de l'utilisateur (en utilisant Set-ADUser) et déplace l'objet utilisateur dans l'unité organisationnelle (OU) "Disabled" (en utilisant Move-ADObject). Les actions sont simulées en utilisant l'option -WhatIf.
Commentaires
Enregistrer un commentaire