31 votes

Récupérer le nom complet de l'utilisateur du domaine actuel

En utilisant PowerShell, comment puis-je obtenir le nom complet de l'utilisateur du domaine actuellement connecté (pas seulement son nom d'utilisateur) sans avoir besoin du module ActiveDirectory ?

3voto

Bacon Bits Points 1501

Si vous disposez toujours de la version 3.5 ou supérieure de .Net (ce qui devrait être le cas avec PowerShell v4.0 et supérieur) :

Add-Type -AssemblyName System.DirectoryServices.AccountManagement;
$DisplayName = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.DisplayName;

Cette classe fournit un accès très facile à toutes les propriétés LDAP courantes, de sorte que vous n'avez pas besoin de chercher deux fois (une fois avec WinNT et une autre fois avec LDAP) ou d'utiliser la classe [ADSISearcher] pour effectuer une recherche LDAP si vous voulez des propriétés étendues que WinNT ne met pas en œuvre.

1voto

Michael Zakes Points 11

L'utilisation de -match n'est pas un bon choix car un $env:USERNAME de "ed" correspondra à "fred" et "edith". Utilisez plutôt -eq pour une correspondance exacte et ajoutez le domaine si nécessaire. J'utilise une boucle foreach à la fin pour supprimer tous les espaces avant et arrière comme alternative à "select fullname | ft -HideTableHeaders" qui imprime une nouvelle ligne avant et arrière.

gwmi win32_useraccount | where {$_.caption -eq $("domain\" + $env:USERNAME)} | foreach {$_.fullname}

1voto

Mostafa Points 1

Et si vous interrogiez le registre au lieu d'AD ? comme ceci :

if ((gwmi win32_computersystem).partofdomain -eq $true)
{Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData\1 -Name "LoggedOnDisplayName"}
else 
{Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData\1 -Name "LoggedOnUser" | %{$_.Split('\')[1]}}

Remarque : testé uniquement sur Windows 10.

Autre remarque : cette fonction recherche le premier utilisateur connecté dans la session en cours. Par exemple, si vous vous déconnectez de john.smith et vous connectez à will.smith et que vous exécutez la fonction ci-dessus, vous obtiendrez les données relatives à john.smith et non à will.smith.

0voto

Massimo Points 67633

Si vous ne voulez pas utiliser le module Active Directory, vous ne pouvez pas ; à moins que vous ne vouliez aller encore plus loin et effectuer une requête LDAP réelle contre un contrôleur de domaine.

Toute information sur l'utilisateur autre que le nom d'utilisateur est stockée dans Active Directory et doit être récupérée à cet endroit.

0 votes

Mais lorsque j'ouvre le menu de démarrage, le nom complet de l'utilisateur est affiché ici ! Il doit être stocké quelque part ?

4 votes

Oui, c'est stocké quelque part. C'est stocké dans Active Directory.

0 votes

Il est probablement stocké/caché dans le registre également, mais je ne l'ai pas trouvé facilement et j'ai abandonné.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X