it-swarm.com.de

Rufen Sie 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 dass das ActiveDirectory-Modul erforderlich ist?

25
Jonathan Rioux
$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 *
27
Clayton

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
15
TheCleaner

Ein Liner mit Powershell 3.0:

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

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 nein, Sie müssen kein Domänenadministrator sein, um Ihren eigenen Namen in AD nachzuschlagen. Sie können als Standardbenutzer so ziemlich alle Informationen nachschlagen, die in GAL in Outlook angezeigt werden, einschließlich des vollständigen Namens).

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 verwaltete Dienstkonten ), sind normalerweise standardmäßige, nicht privilegierte AD-Benutzer.

3

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 einen 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] Verwenden müssen, um eine LDAP-Suche durchzuführen, wenn Sie erweiterte Eigenschaften wünschen dass WinNT nicht implementiert.

2
Bacon Bits

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 sie bei Bedarf in die Domäne ein. Ich verwende eine foreach-Schleife am Ende, um alle führenden Leerzeichen als Alternative zu "select fullname | ft -HideTableHeaders" zu entfernen, das eine führende und nachfolgende Zeilenumbruch druckt.

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

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

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

0
Massimo
([adsi]"LDAP://$(whoami /fqdn)").displayName

Mit diesem sehr einfachen Tool können Sie eine Menge Informationen abrufen. Auschecken

([adsi]"LDAP://$(whoami /fqdn)") | fl *
0
KeyszerS