Frage Ruft den vollständigen Namen des aktuellen Domänenbenutzers ab


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


22
2018-03-17 20:09


Ursprung




Antworten:


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

Kehrt zurück:

John Doe

Einige andere (meist) obskure Eigenschaften sind ebenfalls verfügbar. Ein paar nützliche:

  • Homedrive UNC
  • Homedrive Brief
  • Beschreibung
  • Anmeldeskript

Versuchen:

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

23
2018-03-17 20:30



Gute Antwort. Natürlich, das ist AD abfragen ... :) - Massimo
Benötige ich Domänenadministratorrechte, um diesen Befehl auszuführen? Oder kann der Domänenbenutzer selbst diesen Befehl ausführen? - Jonathan Rioux
Jeder Domänenbenutzer kann AD für diese Art von Informationen abfragen. - Massimo
@Massimo Kein Domänenbenutzer kann AD für diese Art von Informationen abfragen. Benutzern kann die Berechtigung "Kontoeinschränkungen lesen" nicht erteilt (oder verweigert) und keine Daten aus Active Directory abfragen - Ian Boyd


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 Kopfinformation und nur das Ergebnis haben wollen:

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

13
2018-03-17 20:57



Ich lese das zu schnell, es tut Abfrage AD. Ich ziehe meine Stimme verbal zurück. - MDMoore313
Benötigt jedoch keine AD PS-Module - squillman
@squillman tut es nicht, Cleaner nur schwer zu geben. - MDMoore313
Erwischt. Entschuldigung, muss entkoffeiniert worden sein ... - squillman


Ein Liner mit Powershell 3.0:

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

7
2018-03-17 21:35





Basierend auf Ihrem Kommentar zu Craig620s akzeptierter Antwort,

Benötige ich Domänenadministratorrechte, um diesen Befehl auszuführen? Oder kann die Domain   Benutzer selbst kann diesen Befehl ausführen?

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

Sie können auch die vollständigen Namen anderer Personen als Standardbenutzer in AD suchen (mit Get-WmiObject Win32_userAccount, wenn Sie die AD-Module vermeiden wollen). Dienstkonten, die AD abfragen (gut, vor verwaltete Dienstkonten) sind in der Regel normale, unprivilegierte AD-Nutzer.


3
2018-03-17 22:50





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 exakte Übereinstimmung und fügen Sie bei Bedarf die Domäne hinzu. Ich benutze eine foreach-Schleife am Ende, um alle führenden einen nachgestellten Whitespace als Alternative zu "Select fullname | ft - HideTableHeaders", die eine führende und nachfolgende Newline druckt.

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

1
2018-03-09 18:57





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, so dass Sie nicht zweimal suchen müssen (einmal mit WinNT und erneut mit LDAP) oder verwenden [ADSISearcher] eine LDAP-Suche durchzuführen, wenn Sie einige erweiterte Eigenschaften möchten, die WinNT nicht implementiert.


1
2018-03-07 21:55





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

Alle Benutzerinformationen außer dem Benutzernamen werden in Active Directory gespeichert und müssen dort abgerufen werden.


0
2018-03-17 20:17



Aber wenn ich das Startmenü öffne, wird hier der vollständige Name des Benutzers angezeigt! Ich meine, es muss irgendwo gespeichert werden? - Jonathan Rioux
Ja, es ist irgendwo gespeichert. Es ist in Active Directory gespeichert. - Katherine Villyard
Es ist wahrscheinlich auch in der Registry gespeichert / zwischengespeichert, aber ich fand es nicht leicht und gab auf. - mfinni
Es ist wahr, dass es in AD gespeichert ist, aber die [ADSI] Schnittstelle ist viel länger als die AD-Module und ist wirklich nicht so kompliziert, wie die angenommene Antwort zeigt. - Hunter Eidson