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 :

  1. 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é.
  2. 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.
N'oubliez pas que l'option -WhatIf permet de simuler les actions sans les exécuter réellement. Si vous souhaitez effectuer les actions, supprimez simplement l'option -WhatIf dans les commandes Set-ADUser et Move-ADObject. Assurez-vous de comprendre pleinement l'impact de ces actions sur votre environnement Active Directory avant de les exécuter. En conclusion, ce script PowerShell va vous faciliter considérablement la gestion des comptes expirés dans Active Directory en les désactivant. Cela non seulement améliore la sécurité en empêchant les personnes d'utiliser des comptes expirés.

Commentaires

Posts les plus consultés de ce blog

Powershell - Supprimer Teams sur l'ensemble des profils utilisateurs

Powershell - Comment tester les ports TCP ?

MRemoteNG - Voir les mots de passe dans l'application