Recupera il nome completo dell'utente del dominio corrente


23

Utilizzando PowerShell, come posso ottenere il nome completo dell'utente di dominio attualmente connesso (non solo il suo nome utente) senza la necessità del modulo ActiveDirectory?

Risposte:


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

Ritorna:

John Doe

Sono disponibili anche altre proprietà (per lo più) oscure. Alcuni utili:

  • Homedrive UNC
  • Lettera di Homedrive
  • Descrizione
  • Script di accesso

Provare:

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

3
Buona risposta. Certo, questo sta interrogando AD ... :)
Massimo

1
Ho bisogno dei diritti di amministratore del dominio per eseguire questo comando? O l'utente stesso del dominio può eseguire questo comando?
Jonathan Rioux,

1
Qualsiasi utente del dominio può eseguire una query su AD per questo tipo di informazioni.
Massimo

1
@Massimo Nessun utente di dominio può interrogare AD per questo tipo di informazioni. Agli utenti non può essere concessa (o negata) l'autorizzazione "Leggi le restrizioni dell'account" e non è possibile interrogare alcun dato da Active Directory
Ian Boyd,

15

Mi piace la risposta accettata, ma solo perché volevo provare questo da solo:

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

ritorna:

FullName
--------
TheCleaner

o se desideri non avere le informazioni dell'intestazione e solo il risultato:

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

L'ho letto troppo velocemente, fa query su AD. Ritiro verbalmente il mio voto.
MDMoore313

2
Ma non richiede i moduli AD PS
squillman

3
@squillman non è così, sto solo dando a Cleaner un momento difficile.
MDMoore313,

Gotcha. Scusa, devo essere stato decaffeinato ...
Squillman

7

Un liner che utilizza Powershell 3.0:

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

3

Sulla base del tuo commento sulla risposta accettata di Craig620,

Ho bisogno dei diritti di amministratore del dominio per eseguire questo comando? O l'utente stesso del dominio può eseguire questo comando?

Sembra che tu stia cercando di evitare l'installazione di moduli PowerShell sulle workstation degli utenti, sì, ma anche no, non è necessario essere un amministratore di dominio per cercare il tuo nome in AD. Puoi cercare praticamente tutte le informazioni che appaiono nella GAL in Outlook, incluso il nome completo, come utente standard.

Puoi anche cercare i nomi completi di altre persone come utenti standard in AD (utilizzando Get-WmiObject Win32_userAccount, se vuoi evitare i moduli AD). Gli account di servizio che interrogano AD (bene, prima degli account di servizio gestiti ) sono generalmente utenti AD standard e senza privilegi.


1

Usare -match non è una buona scelta perché un $ env: USERNAME di "ed" corrisponderà a "fred" e "edith". Usa invece -eq per una corrispondenza esatta e aggiungi il dominio se necessario. Uso un ciclo foreach alla fine per eliminare tutti gli spazi bianchi iniziali come alternativa a "seleziona nome completo | ft -HideTableHeaders" che stampa una riga iniziale iniziale e finale.

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

1

Se hai sempre .Net 3.5 o versioni successive (che dovresti avere con PowerShell v4.0 e versioni successive):

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

Quella classe fornisce un accesso molto semplice a tutte le proprietà LDAP comuni, quindi non è necessario [ADSISearcher]cercare due volte (una volta con WinNT e di nuovo con LDAP) o utilizzare per fare una ricerca LDAP se si desidera alcune proprietà estese che WinNT non implementa .


0

Se non si desidera utilizzare il modulo di Active Directory, non è possibile; a meno che non si desideri approfondire ulteriormente ed eseguire una query LDAP effettiva su un controller di dominio.

Qualsiasi informazione utente diversa dal nome utente viene archiviata in Active Directory e deve essere recuperata lì.


Ma quando apro il menu Start, qui viene mostrato il nome completo dell'utente! Voglio dire, deve essere conservato da qualche parte?
Jonathan Rioux,

4
Sì, è memorizzato da qualche parte. È archiviato in Active Directory.
Katherine Villyard,

Probabilmente è anche memorizzato / memorizzato nella cache del registro, ma non l'ho trovato facilmente e ho rinunciato.
mfinni,

1
È vero che è archiviato in AD ma l' [ADSI]interfaccia è stata molto più lunga rispetto ai moduli AD e in realtà non è poi così complicata, come mostra la risposta accettata.
Hunter Eidson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.