Comment utiliser Get-ADComputer pour découvrir les propriétés des ordinateurs dans Active Directory avec PowerShell

Comment utiliser PowerShell pour gérer les comptes d’ordinateurs Active Directory

Si vous avez déjà dû rechercher des machines anciennes ou inactives dans votre Active Directory, vous savez à quel point cela peut être fastidieux. Identifier les ordinateurs qui ne se sont pas connectés au réseau depuis longtemps, puis désactiver ou supprimer ces comptes, est une tâche interminable, surtout si vous le faites manuellement. Heureusement, PowerShell offre une méthode assez simple pour automatiser ces opérations, même si sa prise en main peut s’avérer un peu délicate. Il faut s’assurer d’avoir installé les modules nécessaires, et certaines commandes ne sont pas évidentes, comme la recherche de la date de dernière connexion ou le filtrage des ordinateurs inactifs depuis un certain temps. Ce guide vous propose une visite guidée rapide pour vous aider à y voir plus clair et à trouver les comptes obsolètes, les désactiver ou effectuer le nettoyage nécessaire.

Premiers pas avec les ordinateurs Active Directory à l’aide de PowerShell

Vérifiez que le module Active Directory est installé et chargé.

Tout d’abord, pour gérer Active Directory avec PowerShell, vous avez besoin du module Active Directory. Sous Windows 10 ou 11 (et serveurs), vous pouvez l’installer et l’activer via RSAT. Il est parfois déjà installé, notamment si vous l’avez activé précédemment. Sinon, voici la marche à suivre :

Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Ensuite, il suffit d’importer le module (s’il n’est pas importé automatiquement) :

Import-Module ActiveDirectory

C’est un peu bizarre, mais il faut parfois redémarrer après avoir activé RSAT, ou importer manuellement le module à chaque ouverture d’une nouvelle session PowerShell.

Comment lister les propriétés de base d’un ordinateur dans Active Directory

Si vous souhaitez consulter rapidement les informations sur une machine spécifique, vous pouvez exécuter :

Get-ADComputer -Identity SRV-DB01

Cela fournira des informations de base comme le nom DNS, son état (activé ou non), son GUID d’objet, etc. Mais, bien sûr, cela n’inclut pas des éléments importants comme la dernière connexion, souvent nécessaire pour nettoyer les anciens comptes.

Pour voir toutes les propriétés disponibles, vous devrez ajouter -Properties *:

Get-ADComputer -Identity SRV-DB01 -Properties *

Vous pouvez alors consulter une longue liste d’attributs, y compris la fameuse LastLogonDate. Vous pouvez également utiliser Get-Member pour afficher toutes les propriétés :

Get-ADComputer -Filter * -Properties * | Get-Member

Sur certaines configurations, la dernière connexion n’est pas directement stockée dans LastLogonDate (elle peut être uniquement dans LastLogonTimestamp), mais dans la plupart des cas, LastLogonDate est suffisant et plus facile à interpréter.

Noms d’affichage et dates de dernière connexion pour tous les ordinateurs du domaine

Pour afficher rapidement la liste de tous les ordinateurs avec l’horodatage de leur dernière connexion, essayez ceci :

Get-ADComputer -Filter * -Properties LastLogonDate | Select-Object Name, LastLogonDate | Format-Table -AutoSize

Vous obtiendrez ainsi un tableau simple indiquant le nom de la machine et la date et l’heure de sa dernière connexion au domaine. Sur certaines machines, ce tableau peut présenter quelques imperfections, notamment si votre environnement utilise des intervalles de synchronisation différents, mais il est généralement suffisamment précis.

Filtrez les machines obsolètes et désactivez-les.

Voici l’astuce : repérer les ordinateurs inactifs depuis un certain temps. Imaginons que vous souhaitiez trouver tous les ordinateurs qui n’ont pas été utilisés depuis plus de 120 jours, puis désactiver ces comptes. C’est pratique pour automatiser le processus de nettoyage de vieux appareils.

Tout d’abord, générez la date limite :

$dateThreshold = (Get-Date).AddDays(-120)

Cela crée une variable contenant la date d’il y a 120 jours. Vous pouvez ensuite filtrer les ordinateurs en fonction de la date de dernière connexion (LastLogonDate ).

Get-ADComputer -Properties LastLogonDate -Filter * | Where-Object { $_. LastLogonDate -lt $dateThreshold } | Select-Object Name, LastLogonDate

Vous obtenez alors une liste d’anciens comptes inutilisés. Pour les désactiver (sans risquer de perturber les systèmes en production), utilisez d’abord l’option -WhatIf. Elle vous montrera ce qui se passerait sans aucune modification.

Get-ADComputer -Properties LastLogonDate -Filter * | Where-Object { $_. LastLogonDate -lt $dateThreshold } | Set-ADComputer -Enabled $false -WhatIf

Si tout semble correct, exécutez la même commande sans l’option -WhatIf :

Get-ADComputer -Properties LastLogonDate -Filter * | Where-Object { $_. LastLogonDate -lt $dateThreshold } | Set-ADComputer -Enabled $false

Remarque : Toujours vérifier avant de désactiver plusieurs ordinateurs. Il arrive que les dates de dernière connexion soient inexactes ou obsolètes en raison du délai de réplication.

Utiliser des filtres pour affiner votre recherche

Vous souhaitez trouver tous les serveurs ou un système d’exploitation spécifique ? Vous pouvez ajouter des filtres :

(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*'})

Ou affiner la recherche par unité organisationnelle, par exemple, uniquement au sein d’une unité organisationnelle spécifique :

Get-ADComputer -SearchBase 'OU=London, DC=woshub, DC=com' -Filter * -Properties * | Select-Object Name, LastLogonDate

Pour des recherches plus avancées, les filtres LDAP fonctionnent également, comme :

Get-ADComputer -LDAPFilter "(name=*db*)"

Nettoyage des machines anciennes ou inutilisées — Conseils pratiques

Une fois que vous avez identifié les machines inactives depuis un certain temps, vous pouvez supprimer ou désactiver leurs comptes. Pensez à effectuer un -WhatIftest au préalable afin d’éviter de désactiver ou de supprimer des éléments dont vous n’avez pas encore besoin. Si tout est correct, désactivez ou supprimez les éléments nécessaires.

De plus, vous pouvez récupérer des informations supplémentaires (comme les adresses IP, les informations sur le système d’exploitation ou leur état d’activation) et même exporter des données au format CSV ou HTML pour la création de rapports — extrêmement pratique pour les audits et la documentation.

Résumé

  • Assurez-vous que le module AD est installé et chargé.
  • Utiliser Get-ADComputeravec-Properties LastLogonDate
  • Créez un seuil de date et filtrez en fonction de celui-ci.
  • Testez -WhatIfavant d’effectuer des modifications réelles.
  • La mise hors service ou le retrait des anciennes machines peuvent être automatisés.

Conclure

PowerShell simplifie grandement la gestion des comptes d’ordinateurs Active Directory une fois que vous maîtrisez le filtrage et les propriétés. Attention toutefois aux actions groupées : effectuez toujours une vérification -WhatIfpréalable, surtout si vous débutez. Une fois à l’aise, l’automatisation des tâches de nettoyage vous épargnera bien des tracas. Espérons que cela vous permettra de gagner du temps et de désencombrer votre domaine !