Get-AdUser : Comment auditer les utilisateurs Active Directory avec PowerShell

PowerShell est un outil essentiel pour les administrateurs IT, et il facilite l’audit des comptes utilisateur d’Active Directory avec la commande Get-AdUser. Dans ce guide, nous allons détailler comment commencer avec le populaire cmdlet Active Directory. 

Introduction au cmdlet PowerShell Get-AdUser

Le cmdlet Get-AdUser est l’un des cmdlets PowerShell Active Directory les plus populaires. Il vous permet d’obtenir un objet utilisateur spécifié, ou de réaliser des recherches personnalisables pour obtenir plusieurs objets utilisateur.

Publicité

Le paramètre Identity est utilisé pour spécifier quel utilisateur d’Active Directory obtenir. Vous avez plusieurs options pour identifier l’utilisateur :

  • Vous pouvez utiliser leur nom distingué (DN), GUID, identifiant de sécurité (SID) ou nom de compte Security Account Manager (SAM).
  • Vous pouvez également définir le paramètre sur une variable objet utilisateur telle que $UserA ou passer un objet utilisateur à travers le pipeline au paramètre Identity.

Vous pouvez utiliser les paramètres Filter ou LDAPFilter pour rechercher et obtenir plus d’un utilisateur, Le paramètre Filter utilise le langage d’expression PowerShell (PSL) pour interroger Active Directory.

La syntaxe du langage d’expression PowerShell offre aux administrateurs un support riche pour la conversion de types de valeur acceptés par le paramètre Filter. Si vous avez déjà des chaînes de requête du protocole LDAP (Lightweight Directory Access Protocol), utilisez plutôt le paramètre LDAPFilter.

Si aucun paramètre n’est explicitement défini, Get-AdUser affiche un ensemble par défaut de propriétés d’objet utilisateur. Pour récupérer des propriétés supplémentaires, utilisez le paramètre Properties. Nous aborderons certains des paramètres que vous pouvez utiliser plus tard dans cet article.

Publicité

Comment utiliser Get-AdUser et les prérequis

Avant de pouvoir utiliser Get-AdUser et d’autres commandes PowerShell liées à l’annuaire Active Directory, assurez-vous que le module Active Directory est installé et chargé sur votre poste de travail. En fonction de la version de Windows que vous utilisez, il existe différentes méthodes que vous pouvez suivre pour installer la cmdlet.

Pour des raisons de concision, je passerai en revue les deux méthodes les plus courantes que vous êtes susceptible de suivre en tant qu’administrateur ou professionnel de l’informatique gérant votre annuaire Active Directory en local.

Tout d’abord, vous pouvez utiliser la commande PowerShell suivante pour installer l’outil Outils d’administration de serveur distant (RSAT) directement depuis Windows Update.

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

La deuxième méthode consiste à utiliser l’application Paramètres pour installer l’outil RSAT directement. Cliquez sur Démarrer-> Paramètres -> Applications -> Fonctionnalités facultatives -> Ajouter une fonctionnalité -> et cochez l’option RSAT : Outils des services de domaine Active Directory et des services d’annuaire légers.

Publicité

Cliquez sur le bouton Installer.

Comment trouver un compte utilisateur AD en utilisant le paramètre -Identity

D’accord, commençons à utiliser le cmdlet et je vais vous montrer comment je peux vous aider à devenir plus efficace (et rapide !) pour obtenir les informations dont vous avez besoin. Je travaille dans mon environnement de laboratoire Hyper-V (Active Directory Windows Server 2022) et je suis connecté à une machine virtuelle (VM) client Windows 10 21H1. J’ai recherché dans le menu Démarrer « Module Active Directory pour Windows PowerShell » et l’ai ouvert en tant qu’administrateur.

Active Directory Module for Windows PowerShell

Tout d’abord, trouvons un utilisateur de domaine basé sur l’attribut sAMAccountName

Get-ADUser breinders
Finding a user account via their sAMAccountName

Voilà. Nous pouvons maintenant utiliser l’attribut objectGUID (ou GUID) pour trouver un utilisateur. Essayons :

Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250
Finding an account via their objectGUID (GUID)

Ah, même compte utilisateur. Excellent. Nous pouvons également rechercher un utilisateur en fonction de leur identifiant de sécurité, ou SID.

Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107
Finding an account via their Security IDentifier (SID)

Oui, un peu répétitif, mais vous avez compris. Vous pouvez également utiliser le nom de famille de l’utilisateur, le nom, le UserPrincipalName, et d’autres.

En utilisant le filtre Get-AdUser

Dans des environnements plus importants, je ne recommanderais pas de taper simplement ‘Get-AdUser’ car cela commencera à récupérer TOUS les objets utilisateur de votre domaine AD attaché. Non seulement cela commencera à inonder votre console de données, mais cela pourrait également mettre une pression notable sur n’importe quel contrôleur de domaine que votre poste de travail utilise.

Si seulement nous pouvions filtrer l’ensemble de la base d’utilisateurs et rechercher des utilisateurs spécifiques en fonction de certaines propriétés. Eh bien, c’est exactement ce que le paramètre ‘-filter’ est fait pour!

Le paramètre ‘-filter’ spécifie une chaîne de requête qui récupère des objets AD. Cette chaîne utilise la syntaxe du langage d’expression PowerShell (PEL). La syntaxe PEL fournit une riche prise en charge de la conversion de type pour les types de valeur reçus par le filtre. La syntaxe utilise une représentation dans l’ordre, ce qui signifie que l’opérateur est placé entre l’opérande et la valeur. Passons en revue quelques exemples pour vous donner une meilleure idée.

Tout d’abord, découvrons tous les comptes qui sont ‘Activés’.

Get-ADUser -filter {Enabled -eq "true"} | ft
Locating all the enabled accounts

Nous utilisons cette belle syntaxe PEL pour trouver tous les comptes avec le champ « Enabled » égal à True. Nous redirigeons également la sortie en utilisant la cmdlet Format-Table PowerShell pour un format d’affichage plus facile à lire.

Ensuite, affichons tous les utilisateurs avec une adresse e-mail.

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding all the user accounts with an email address

Tout d’abord, remarquez que nous utilisons le paramètre « -filter » pour inclure uniquement les comptes d’utilisateurs qui n’ont pas une adresse e-mail « null ». Ou, plus simplement, tous les comptes avec une adresse e-mail. Je sais, parfois c’est difficile de penser comme un ordinateur.

Ensuite, nous nous concentrons sur les trois propriétés Nom, Prénom, et mail (adresse e-mail). Nous utilisons Format-Table et listons ces propriétés. Un jeu d’enfant !

Vous voudrez peut-être également auditer vos comptes d’un point de vue sécurité. Vous pouvez également utiliser le paramètre « -filter » pour trouver tous les comptes avec l’attribut « passwordneverexpires ». Ceci n’est généralement pas conseillé.

Get-AdUser where name like ?

Une autre fonctionnalité intéressante consiste à utiliser divers paramètres avec -filter pour trouver uniquement les utilisateurs spécifiques correspondant aux différentes propriétés d’un objet utilisateur AD. Bien que mon environnement de laboratoire soit extrêmement petit et ne dispose que d’une dizaine de comptes d’utilisateurs, cela peut toujours démontrer la puissance et la flexibilité de pouvoir trouver très rapidement les comptes que vous recherchez. Ici, trouvons tous les utilisateurs avec « Reinders » dans leur nom.

Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Nous utilisons le paramètre ‘Nom’ et trouvons tous les comptes qui contiennent ‘Reinders’ n’importe où dans le nom. Cela peut être leur prénom, leur nom de famille, voire un deuxième prénom s’il est saisi. Si vous voulez UNIQUEMENT trouver des utilisateurs avec Reinders comme nom de famille, changez le champ -like pour être « *Reinders » (Remarquez, il n’y a pas d’astérisque (*) à la fin du champ).

Limitation de la portée de recherche Get-AdUser par unité organisationnelle

Si vous avez un domaine/entreprise relativement large, vous pouvez rencontrer des temps de requête plus longs lors de l’exécution de ces commandes, ou des impacts de performance inutiles sur vos contrôleurs de domaine. Parlons de limiter la portée de ces recherches à une unité organisationnelle (OU) spécifique.

Nous pouvons utiliser le paramètre ‘-SearchBase’ et spécifier une OU (ou plusieurs OUs) en utilisant la syntaxe suivante.

Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress
Here, we’re limiting the search scope to the ‘Test Users’ Organization Unit (OU)

Ici, nous limitons notre portée à tous les utilisateurs dans l’OU « Utilisateurs de test », puis nous affichons leur nom et leur adresse e-mail au format de tableau.

Utilisation de Get-AdUser avec des informations d’identification alternatives

Par défaut, la cmdlet Get-AdUser est exécutée dans le contexte de l’utilisateur actuellement connecté. Si vous souhaitez exécuter la commande avec des informations d’identification alternatives, vous pouvez utiliser une variable, stocker les informations d’identification alternatives dans cette variable, puis exécuter la commande en utilisant l’option ‘-Credential’.

$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Encore une fois, simple et direct !

Travailler avec le paramètre Properties de Get-AdUser

I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.

Le paramètre ‘-Properties’ spécifie les propriétés de l’objet de sortie à récupérer depuis le serveur. Par défaut, si vous ne l’utilisez pas, dix propriétés sont retournées et affichées. Des choses comme DistinguishedName, si le compte est ‘Activé’ ou ‘Désactivé’, le Prénom de l’utilisateur, le Nom, le GUID, et d’autres attributs plus système. Mais il y en a tout un tas d’autres disponibles. Utilisez ce paramètre pour récupérer les propriétés qui ne sont pas incluses dans l’ensemble par défaut.

Spécifiez les propriétés pour ce paramètre sous forme d’une liste de noms séparés par des virgules. Pour afficher tous les attributs définis sur l’objet, spécifiez * (astérisque).

Pour accéder à ces autres propriétés, il suffit de les spécifier ; utilisez le nom de la propriété. Pour les propriétés qui ne sont pas des propriétés par défaut ou étendues, vous devez spécifier le nom d’affichage Lightweight Directory Access Protocol (LDAP) de l’attribut.

Passons en revue quelques exemples.

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet
Displaying all users with the date and time their password was last set/reset

L’exemple ci-dessus montre tous les utilisateurs du domaine avec leur Nom et la date/heure de la dernière définition/réinitialisation de leur mot de passe.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Another nice feature is listing every user’s Creation Date in Active Directory

Ceci montre quand le compte a été créé dans Active Directory. Terminons avec une requête pour récupérer le Nom, le Service et le Manager de chaque compte.

Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager
Listing the Department and the Manager of each user, if they’re populated in Active Directory

Un dernier exemple et une excellente utilisation de la commande Export-Csv. Si vous avez besoin d’obtenir une liste de tous les utilisateurs dans un domaine et d’inclure toutes les propriétés, n’hésitez pas à exécuter cette commande pour tout exporter dans un fichier CSV pratique.

Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv

Résumé

I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.

Il est souvent étonnamment facile de penser à de nombreux cas d’utilisation pour lesquels vous pouvez utiliser cette commande pour résoudre un problème, créer de la documentation pour d’autres ingénieurs et aider dans les processus de dépannage globaux. Cela peut s’avérer très utile. Et bien sûr, l’utilisation de certaines de ces commandes pour générer un script PowerShell… améliore toujours l’efficacité !

N’hésitez pas à poser vos questions ou à laisser des commentaires ci-dessous.

Article connexe :

Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/