Obtenir la liste des ordinateurs et utilisateurs qui ne sont plus utilisés dans un domaine Active Directory

PowerShell logo

Intro

Le temps passant, sur un Active Directory il devient inévitable de se retrouver avec des objets ordinateurs et utilisateurs parasites.

Par parasites j'entends le fait qu'ils ne sont plus utilisés dans l'entreprise (pc et/ou utilisateur physiquement détruit, volé, égaré, parti etc...).

Dans ce cas précis il devient nécessaire de faire un peu de ménage, mais la question est de savoir comment récupérer la liste des postes qui ne sont plus utilisés dans un domaine? Le but de cet article est donc de voir comment obtenir une liste des postes ne s'étant plus connectés sur un domaine depuis un nombre de jours prédéfinis et ce grace à PowerShell.

Lister les Utilisateurs et Ordinateurs AD

La première chose à savoir est comment récupérer nos utilisateurs et ordinateurs dans Active Directory.

  • Ouvrir Windows PowerShell en mode administrateur :
PowerShell | Open PowerShell Console as administrator

Ordinateurs

  • Entrer la commande suivante pour lister tous les Ordinateurs :
PS C:\ > (Get-ADComputer -Filter '*').Name
  • Entrer la commande suivante pour lister les Ordinateurs dont le nom commence par PC :
PS C:\ > (Get-ADComputer -Filter 'Name -Like "PC*"').Name
  • Sortie :
PowerShell | get computers name

Utilisateurs

  • Entrer la commande suivante pour obtenir la liste de tous les Utilisateurs :
PS C:\ > (Get-ADUser -Filter '*').SamAccountName
  • Sortie :
PowerShell | get users name

Récupérer la date de dernière connexion

  • Pour connaitre la date de la dernière connexion nous allons utiliser l'attribut LastLogonTimeStamp :
PS C:\ > $user = "e.cartman"
PS C:\ > Get-ADUser "$user" -Properties LastLogonTimeStamp
  • Sortie :
PowerShell | Get-ADUser and Get-ADComputer output
  • Comme nous pouvons le voir nous ne pouvons pas utiliser les informations brutes reçus. Nous allons avoir besoin d'utiliser [DateTime]::FromFileTime pour convertir la valeur en format exploitable :
PS C:\ > [DateTime]::FromFileTime((Get-ADUser "$user" -Properties LastLogonTimeStamp).LastLogonTimeStamp)
  • C'est beaucoup mieux :
PowerShell | Print LastLogon date

Récupérer la date de dernière connexion

Nous avons maintenant tout ce dont nous avons besoin pour lister les Ordinateurs et Utilisateurs.

  • Disons que l'on souhaite lister les Ordinateurs qui n'ont pas été vu depuis 120 jours.
PS C:\ > $days = 120
PS C:\ > Get-ADComputer -Filter '*' -Properties LastLogonTimeStamp | where { ($(Get-Date)-[DateTime]::FromFileTime($_.LastLogonTimeStamp)).Days -gt $days } | Select-Object Name
PowerShell | List old computers objects
  • Disons que l'on souhaite lister les Utilisateurs qui n'ont pas été vu depuis 120 jours.
PS C:\ > $days = 120
PS C:\ > Get-ADUser -Filter '*' -Properties LastLogonTimeStamp | where { ($(Get-Date)-[DateTime]::FromFileTime($_.LastLogonTimeStamp)).Days -gt $days } | Select-Object Name
PowerShell | List old users account

References

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :