Lister les ordinateurs et utilisateurs qui ne sont plus utilisés dans un domaine Active Directory
- Mise à jour le 04 nov. 2024

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étruits, volés, égarés, partis 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 :

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 :

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

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 :

- 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)
- Ce qui est beaucoup mieux :

Mise en application
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

- 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
