Publié le : 15/01/2022

Windows Active Directory : récupérer les informations sur les utilisateurs avec la commande Get-ADUser

windows active directory informations utilisateurs

Avec Microsoft Windows Server, il est possible de gérer les informations des utilisateurs en utilisant Active Directory. Cette gestion peut se faire via la fenêtre « Utilisateurs et ordinateurs Active Directory ». Cette fenêtre est accessible via le chemin

Démarrer > Panneau de configuration > Outils d'administration > Utilsiateurs et ordinateurs Active Directory

Dans cette article, nous allons voir comment accéder et manipuler les inforamations concernant les utilisateurs dans Active Directory via le cmdlet Get-ADUser. Ce cmdlet est disponible depuis PowerShell 2.0 dans le module Active Directory. Autrement dit, ce cmdlet et disponible depuis la version Windows Server 2008 R2. Il offre une excellente alternative aux autres outils qui peuvent être utilisés comme les scripts VBS ou dsquery.

Avec Get-ADUser, nous pouvons récupérer les informations grâce à la lecture des attributs comme :

  • L’adresse mail d’un utilisateur ;
  • L’identifiant d’un utilisateur, son nom et prénom ;
  • La date de la dernière connexion ;
  • La date de la dernière modification du compte utilsiateur ;
  • etc…

Mais, nous tenons à préciser que les informations qui vont être récupérées seront les informations qui seront renseignées.

Dans la suite de cette article, nous allons utiliser PowerShell.

Syntaxe de Get-ADUser pour récupérer les informations des utilisateurs dans Active Directory

La commande Get-ADUser utilise le paramètre -Filter pour créer une requête et rechercher les utilisateurs. Ainsi, si on veut récupérer la liste de tous les utilisateurs du domaine, on peut exécuter la commande ci-dessous :

Get-ADUser -Filter *

Il faut faire attention à cette commande car il est très gourmande en ressource. En effet, si l’Active Directory contient de nombreux comptes, la requête peut durer un certain temps.

Ensuite, les requêtes ci-dessous retourne le même résultat qui est de filtrer un seul utilisateur en se basant sur le login.

Get-ADUser -Filter "SamAccountName -eq 'Administrator'"
Get-ADUser -Identity Administrator
Get-ADUser Administrator

Mais, il est préférable de préciser un contrôleur de domaine. Ainsi la requête ci-dessous devient :

Get-ADUser -Filter "SamAccountName -eq 'Administrateur'" -Server SRV.domaine.local

Si la requête ci-dessus n’affiche pas les informations que nous avons besoin, utiliser le paramètre -Properties. Ainsi, comme exemple, nous allons afficher le ≪mail≫ d’un utilisateur en utilisant la commande ci-dessous.

Get-ADUser -Filter "SamAccountName -eq 'Administrateur'" -Server SRV.domaine.local -Properties mail

Et si on veut utiliser plusieurs attributs, il faut les séparer par une virgule. Par exemple :

Get-ADUser -Filter "SamAccountName -eq 'Administrateur'" -Server SRV.domaine.local -Properties mail,lastLogon

Utilisation du paramètre SearchBase

Tout d’abord, si on veut utiliser SearchBase, il faut connaître le chemin correspondant au DN (Distinguished Name). Pour ce faire, on peut uitliser la commande Get-ADOrganizationalUnit.

Get-ADOrganizationalUnit -Filter * | Format-Table DistinguishedName

Ensuite, on peut spécifier le filtre basé sur l’unité d’organisation avec la commande

Get-ADUser -Filter "SamAccountName -eq 'Administrateur'" -SearchBase "CN=Users,DC=DOMAINIE,DC=LOCAL" -Server SRV.domaine.local

Il est aussi possible de récupérer la liste des utilisateurs à partir de plusieurs unité d’organisations.

Affichage des résultats de requête sous forme de tableau

Pour afficher le résultat d’une requête via la commande Get-ADUser sous forme tableau, on va utiliser la commande Format-Table. Ainsi, on peut avoir une requête sous la forme :

Get-ADUser -Filter * -SearchBase "CN=Users,DC=DOMAINE,DC=LOCAL" -Properties EmailAddress | Format-Table Name,EmailAddress

Et pour que la requête ci-dessus soit plus pertinent, nous pouvons ajouter un filtre pour récupérer les utilisateurs actifs et où l’attribut EmailAddress n’est pas vide. De ce fait, nous aurons :

Get-ADUser -Filter {(EmailAddress -ne "null") -and (Enabled -eq "true")} -SearchBase "CN=Users,DC=DOMAINE,DC=LOCAL" -Properties EmailAddress | Format-Table Name,EmailAddress

Nombre d’utilisateurs dans l’Active Directory

Pour que l’on puisse avoir le nombre d’utilisateurs dans l’Active Directory, nous pouvons utiliser Count.

Ainsi, nous pouvons avoir la commande suivante pour afficher le nombre d’utilisateur dont le compte est actif :

(Get-ADUser -Filter { Enabled -eq $True }).Count

Les groupes d’un utilisateur

Pour savoir la liste des groupes dont un utilisateur est membre, nous pouvons exécuter la commande suivante :

Get-ADUser -Identity Administrateur -Properties memberof | Select-Object memberof -ExpandProperty memberof

Et si on veut vérifier si un utilisateur est membre d’un certain groupe, on peut faire comme suit :

$MemberOf = Get-ADUser -Identity Administrateur -Properties memberof | Select-Object SamAccountName,memberof

if($MemberOf.memberof -match "Admins du domaine"){
    Write-Host "attention il s'agit d'un compte Administrateur !"
}

Filter et Like

Comme mentionné un peu plus haut, le paramètre -Filter permet d’avoir un filtre sur la commande Get-ADUser. Ce paramètre permet de faire un filtre précis. Mais par contre, si on veut rechercher un utilisateur dont on connait un un bout du nom par exemple, on va combiner le filtre à l’opérateur Like. Ci-dessous un exemple :

Get-ADUser -Filter "Name -Like '*connect*'" -Properties Name,SamAccountName | Select Name,SamAccountName

Vous avez remarqué la présence des astérisques avant et après le terme à rechercher pour dire qu’il peut y avoir X caractères avant et X caractères après.

Il est aussi possible de combiner les conditions en séparant par un opérateur comme -and ou -or afin d’affiner la requête. Par exemple :

Get-ADUser -Filter "(Name -Like '*connect*') -or (SamAccountName -Like '*connect*')" -Properties * | Select Name,SamAccountName

Liste des comptes dont le mot de passe est expiré

Pour récupérer la liste des comptes dont le mot de passe est expiré, il faut charger la propriété PasswordExpired et réaliser un filtre sur cette propriété. Par contre, il est possible de faire un filtre avec la condition à mettre dans -Filter ou en utilsant Where (Where-object) ou de mixer les deux. Voici un exemple de récupérer la liste des utilisateurs dont le mot de passe est expiré en utilisant Where.

Get-ADUser -Filter { Enabled -eq "True" } -Properties PasswordExpired | Where {$_.PasswordExpired -eq $true }

Le caractère $_ permet d’utiliser une variable automatique qui reprend l’occurrence courante renvoyée par la commande avant le ≪ | ≫ c’est à dire Get-ADUser.

Les mots clés rattachés à cet article : Active Directory  -  Windows

Nos clients

Une vingtaine de clients nationaux et internationaux