Den vollständigen Namen des aktuellen Domänenbenutzers abrufen

23

Wie kann ich mit PowerShell den vollständigen Namen des aktuell angemeldeten Domänenbenutzers (nicht nur den Benutzernamen) abrufen, ohne das ActiveDirectory-Modul zu benötigen?

Jonathan Rioux
quelle

Antworten:

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

Kehrt zurück:

John Doe

Einige andere (meistens) undurchsichtige Eigenschaften sind ebenfalls verfügbar. Einige nützliche:

  • Homedrive UNC
  • Homedrive Brief
  • Beschreibung
  • Anmeldeskript

Versuchen:

[adsi]"WinNT://$dom/$usr,user" | select *
Clayton
quelle
3
Gute Antwort. Natürlich wird AD abgefragt ... :)
Massimo
1
Benötige ich Domänenadministratorrechte, um diesen Befehl auszuführen? Oder kann der Domänenbenutzer selbst diesen Befehl ausführen?
Jonathan Rioux
1
Jeder Domänenbenutzer kann AD nach dieser Art von Informationen abfragen.
Massimo
1
@Massimo Kein Domänenbenutzer kann AD nach dieser Art von Informationen abfragen. Benutzern kann die Berechtigung "Kontoeinschränkungen lesen" nicht gewährt (oder verweigert) werden, und sie können keine Daten aus Active Directory
Ian Boyd,
15

Ich mag die akzeptierte Antwort, aber nur, weil ich das selbst ausprobieren wollte:

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

kehrt zurück:

FullName
--------
TheCleaner

oder wenn Sie nicht die Header-Informationen und nur das Ergebnis haben möchten:

$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide
Der Reiniger
quelle
Ich habe das zu schnell gelesen, es fragt AD ab. Ich ziehe meine Stimme mündlich zurück.
MDMoore313
2
Benötigt
3
@squillman tut es nicht, es fällt Cleaner nur schwer.
MDMoore313
Erwischt. Entschuldigung, muss entkoffeiniert worden sein ...
squillman
7

Ein Liner mit Powershell 3.0:

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

Basierend auf Ihrem Kommentar zur akzeptierten Antwort von Craig620,

Benötige ich Domänenadministratorrechte, um diesen Befehl auszuführen? Oder kann der Domänenbenutzer selbst diesen Befehl ausführen?

Es hört sich so an, als würden Sie versuchen, die Installation von Powershell-Modulen auf Benutzerarbeitsstationen zu vermeiden. Ja, aber Sie müssen auch kein Domänenadministrator sein, um Ihren eigenen Namen in AD nachzuschlagen. Sie können so ziemlich alle Informationen nachschlagen, die in der GAL in Outlook angezeigt werden, einschließlich des vollständigen Namens als Standardbenutzer.

Sie können auch die vollständigen Namen anderer Personen als Standardbenutzer in AD nachschlagen (mit Get-WmiObject Win32_userAccount, wenn Sie die AD-Module vermeiden möchten). Dienstkonten , die AD abfragen (also vor verwalteten Dienstkonten ), sind in der Regel standardmäßige, nicht privilegierte AD-Benutzer.

Katherine Villyard
quelle
1

Die Verwendung von -match ist keine gute Wahl, da ein $ env: USERNAME von "ed" mit "fred" und "edith" übereinstimmt. Verwenden Sie stattdessen -eq für eine genaue Übereinstimmung und fügen Sie bei Bedarf die Domäne hinzu. Ich benutze eine foreach-Schleife am Ende, um alle führenden und nachfolgenden Leerzeichen als Alternative zu "select fullname | ft -HideTableHeaders" zu entfernen, wodurch eine führende und nachfolgende Zeile ausgegeben wird.

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

Wenn Sie immer .Net 3.5 oder höher haben (was Sie mit PowerShell v4.0 und höher tun sollten):

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

Diese Klasse bietet sehr einfachen Zugriff auf alle gängigen LDAP-Eigenschaften, sodass Sie nicht zweimal nachschlagen müssen (einmal mit WinNT und erneut mit LDAP) oder [ADSISearcher]eine LDAP-Suche durchführen müssen, wenn Sie einige erweiterte Eigenschaften wünschen, die WinNT nicht implementiert .

Speckwürfel
quelle
0

Wenn Sie das Active Directory-Modul nicht verwenden möchten, ist dies nicht möglich. es sei denn, Sie möchten noch tiefer gehen und eine tatsächliche LDAP-Abfrage für einen Domänencontroller ausführen.

Andere Benutzerinformationen als der Benutzername werden in Active Directory gespeichert und müssen dort abgerufen werden.

Massimo
quelle
Aber wenn ich das Startmenü öffne, wird hier der vollständige Name des Benutzers angezeigt! Ich meine, muss es irgendwo aufbewahrt werden?
Jonathan Rioux
4
Ja, es ist irgendwo gespeichert. Es ist in Active Directory gespeichert.
Katherine Villyard
Es ist wahrscheinlich auch in der Registrierung gespeichert / zwischengespeichert, aber ich habe es nicht leicht gefunden und aufgegeben.
MFINNI
1
Es ist wahr, dass es in AD gespeichert ist, aber die [ADSI]Benutzeroberfläche gibt es schon viel länger als die AD-Module und es ist wirklich nicht allzu kompliziert, wie die akzeptierte Antwort zeigt.
Hunter Eidson