Powershell – Exploiter rapidement une propriété d’utilisateur AD courant.

I. Présentation

Au sein de scripts de login, il est assez fréquent d’avoir besoin de traiter une information propre au compte d’utilisateur courant. (Autrement dit, celui avec lequel la session est  ouverte 😀 )

La variable la plus courante est probablement %USERNAME% (dans le contexte d’environnement traditionnel) ou $env:USERNAME en code Powershell. Hors, pour un compte d’utilisateur, particulièrement un compte déclaré dans Active Directory, les “propriétés” (ou attributs) sont beaucoup plus riches et intéressantes, pour peu qu’elles soient renseignées.

 

II. Explications

Pour récupérer des informations sur un objet Active Directory, dont une classe Utilisateur, le premier réflexe serait d’utiliser une requête, comme par exemple, récupérer la valeur  du dossier personnel de l’utilisateur.

$HomeDir = ([adsisearcher]"samAccountName=$env:USERNAME").findone().getdirectoryentry().homeDirectory.value

 

Ce code est parfaitement fonctionnel mais présente un inconvénient majeur du fait qu’il utilise le nom court de l’utilisateur, ce qui implique que la requête doit “balayer” toute l’arborescence AD pour trouver l’objet recherché et afficher l’information souhaitée.

Ce qui est dommage, vu que la requête est exécutée dans le contexte de ce fameux utilisateur.

 

III. L’astuce – Mixer l’outil whoami avec ADSI

L’astuce consiste à obtenir l’information du nom pleinement qualifié (FQDN) de l’utilisateur courant via la commande “whoami /fqdn” puis de l’associer au fournisseur Powershell “[ADSI]LDAP://” et le tour est joué 🙂

Ce qui donne un code du genre :

$HomeDir = ([ADSI]"LDAP://$(whoami /fqdn)").Properties["homeDirectory"].Value

 

Ou plus simplement

$HomeDir = ([ADSI]"LDAP://$(whoami /fqdn)").homeDirectory

 

Faites le test sur un Active Directory de production ou avec un grand nombre d’utilisateurs. Le gain de temps est très appréciable 🙂

Bien à vous

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.