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


À l'aide de PowerShell, comment obtenir le nom complet de l'utilisateur du domaine actuellement connecté (pas uniquement son nom d'utilisateur) sans avoir besoin du module ActiveDirectory?


22
2018-03-17 20:09


origine




Réponses:


$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").fullname

Résultats:

John Doe

Quelques autres propriétés (pour la plupart) obscures sont également disponibles. Quelques utiles:

  • Homedrive UNC
  • Lettre Homedrive
  • La description
  • Script de connexion

Essayer:

[adsi]"WinNT://$dom/$usr,user" | select *

23
2018-03-17 20:30



Bonne réponse. Bien sûr, cela est interroger AD ... :) - Massimo
Ai-je besoin de droits d'administrateur de domaine pour exécuter cette commande? Ou l'utilisateur du domaine peut-il exécuter cette commande? - Jonathan Rioux
Tout utilisateur de domaine peut interroger AD pour ce type d'informations. - Massimo
@ Massimo Aucun utilisateur du domaine ne peut interroger AD pour ce type d'informations. Les utilisateurs peuvent se voir refuser (ou refuser) l'autorisation "Lire les restrictions de compte" et ne pas pouvoir interroger les données d'Active Directory - Ian Boyd


J'aime la réponse acceptée, mais juste parce que je voulais essayer cela moi-même:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName

résultats:

FullName
--------
TheCleaner

ou si vous souhaitez ne pas avoir les informations d'en-tête et juste le résultat:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide

13
2018-03-17 20:57



Je lis ceci trop vite, ça Est-ce que requête AD. Je retire mon vote verbalement. - MDMoore313
Mais ne nécessite pas les modules AD PS - squillman
@quillman ça ne se fait pas, il suffit de donner à Cleaner une période difficile. - MDMoore313
Je t'ai eu. Désolé, doit avoir été décaféiné ... - squillman


Une doublure utilisant Powershell 3.0:

gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders

7
2018-03-17 21:35





Sur la base de votre commentaire sur la réponse acceptée par Craig620,

Ai-je besoin de droits d'administrateur de domaine pour exécuter cette commande? Ou peut le domaine   l'utilisateur lui-même peut exécuter cette commande?

On dirait que vous essayez d'éviter d'installer des modules PowerShell sur les postes de travail des utilisateurs. Oui, mais non, vous n'avez pas besoin d'être un administrateur de domaine pour rechercher votre propre nom dans AD. Vous pouvez rechercher à peu près toutes les informations qui apparaissent dans la liste d'adresses globale dans Outlook, y compris le nom complet, en tant qu'utilisateur standard.

Vous pouvez également rechercher les noms complets d'autres personnes en tant qu'utilisateur standard dans AD (à l'aide de Get-WmiObject Win32_userAccount, si vous voulez éviter les modules AD). Comptes de service qui interrogent AD (ainsi, avant le comptes de service gérés) sont généralement des utilisateurs AD standard et non privilégiés.


3
2018-03-17 22:50





L'utilisation de -match n'est pas un bon choix car un $ env: USERNAME of "ed" correspondra à "fred" et "edith". À la place, utilisez -eq pour une correspondance exacte et ajoutez le domaine si nécessaire. J'utilise une boucle foreach à la fin pour supprimer tous les espaces de début de ligne au lieu de "select fullname | ft -HideTableHeaders", qui permet d'imprimer une nouvelle ligne de début et de fin.

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

1
2018-03-09 18:57





Si vous avez toujours obtenu .Net 3.5 ou supérieur (ce que vous devriez utiliser 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. Vous n'avez donc pas besoin de rechercher deux fois (une fois avec WinNT et une autre fois avec LDAP) ou d'utiliser [ADSISearcher] faire une recherche LDAP si vous voulez des propriétés étendues que WinNT n’implémente pas.


1
2018-03-07 21:55





Si vous ne souhaitez pas utiliser le module Active Directory, vous ne pouvez pas; sauf si vous souhaitez aller encore plus loin et effectuer une requête LDAP réelle sur un contrôleur de domaine.

Toutes les informations utilisateur autres que le nom d'utilisateur sont stockées dans Active Directory et doivent y être récupérées.


0
2018-03-17 20:17



Mais lorsque j'ouvre le menu Démarrer, le nom complet de l'utilisateur est affiché ici! Je veux dire, il doit être stocké quelque part? - Jonathan Rioux
Oui, il est stocké quelque part. Il est stocké dans Active Directory. - Katherine Villyard
Il est probablement stocké / mis en cache dans le registre également, mais je ne l'ai pas trouvé facilement et j'ai abandonné. - mfinni
C'est vrai que c'est stocké dans AD mais le [ADSI] L’interface existe depuis bien plus longtemps que les modules AD et n’est vraiment pas compliquée, comme le montre la réponse acceptée. - Hunter Eidson