Recuperar el nombre completo del usuario del dominio actual


23

Con PowerShell, ¿cómo puedo obtener el nombre completo del usuario del dominio actualmente conectado (no solo su nombre de usuario) sin la necesidad del módulo ActiveDirectory?

Respuestas:


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

Devoluciones:

John Doe

Algunas otras propiedades (en su mayoría) oscuras también están disponibles. Algunos útiles:

  • Homedrive UNC
  • Carta de Homedrive
  • Descripción
  • Script de inicio de sesión

Tratar:

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

3
Buena respuesta. Por supuesto, esto está consultando AD ... :)
Massimo

1
¿Necesito derechos de administrador de dominio para ejecutar este comando? ¿O el usuario del dominio puede ejecutar este comando?
Jonathan Rioux

1
Cualquier usuario de dominio puede consultar AD para este tipo de información.
Massimo

1
@Massimo Ningún usuario de dominio puede consultar AD para este tipo de información. A los usuarios no se les puede otorgar (o negar) el permiso "Leer restricciones de cuenta", y no pueden consultar ningún dato de Active Directory
Ian Boyd

15

Me gusta la respuesta aceptada, pero solo porque quería probar esto yo mismo:

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

devoluciones:

FullName
--------
TheCleaner

o si desea no tener la información del encabezado y solo el resultado:

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

He leído este demasiado rápido, se hace la consulta AD. Retracto verbalmente mi voto.
MDMoore313

2
Pero no requiere los módulos AD PS
squillman

3
@squillman no lo hace, solo le da a Cleaner un momento difícil.
MDMoore313

Gotcha Lo siento, debe haber sido descafeinado ...
Squillman

7

Un revestimiento usando Powershell 3.0:

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

3

Según su comentario sobre la respuesta aceptada de Craig620,

¿Necesito derechos de administrador de dominio para ejecutar este comando? ¿O el usuario del dominio puede ejecutar este comando?

Parece que está tratando de evitar instalar módulos de PowerShell en estaciones de trabajo de usuario, sí, pero también, no, no necesita ser un administrador de dominio para buscar su propio nombre en AD. Puede buscar casi cualquier información que aparezca en la GAL en Outlook, incluido el nombre completo, como usuario estándar.

También puede buscar los nombres completos de otras personas como usuario estándar en AD (usando Get-WmiObject Win32_userAccount, si desea evitar los módulos AD). Las cuentas de servicio que consultan AD (bueno, antes de las cuentas de servicio administradas ) generalmente son usuarios estándar de AD sin privilegios.


1

Usar -match no es una buena opción porque un $ env: USERNAME de "ed" coincidirá con "fred" y "edith". En su lugar, use -eq para una coincidencia exacta y agregue el dominio si es necesario. Utilizo un bucle foreach al final para quitar todos los espacios en blanco iniciales como alternativa a "select fullname | ft -HideTableHeaders", que imprime una nueva línea inicial y final.

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

1

Si siempre tiene .Net 3.5 o superior (que debería tener con PowerShell v4.0 y superior):

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

Esa clase proporciona un acceso muy fácil a todas las propiedades comunes de LDAP, por lo que no necesita buscar dos veces (una con WinNT y otra con LDAP) ni utilizar [ADSISearcher]para hacer una búsqueda de LDAP si desea algunas propiedades extendidas que WinNT no implementa .


0

Si no desea utilizar el módulo Active Directory, no puede hacerlo; a menos que desee profundizar aún más y realizar una consulta LDAP real contra un controlador de dominio.

Cualquier información de usuario que no sea el nombre de usuario se almacena en Active Directory, y debe recuperarse allí.


Pero cuando abro el menú de inicio, ¡aquí se muestra el nombre completo del usuario! Quiero decir, ¿debe almacenarse en algún lugar?
Jonathan Rioux

44
Sí, está almacenado en alguna parte. Está almacenado en Active Directory.
Katherine Villyard

Probablemente también esté almacenado / en caché en el registro, pero no lo encontré fácilmente y me di por vencido.
mfinni

1
Es cierto que está almacenado en AD, pero la [ADSI]interfaz ha durado mucho más tiempo que los módulos de AD, y realmente no es tan complicado, como muestra la respuesta aceptada.
Hunter Eidson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.