检索当前域用户的全名


Answers:


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

返回值:

John Doe

其他一些(大多数)晦涩的属性也可以使用。一些有用的:

  • 家用驱动器UNC
  • 返航信
  • 描述
  • 登录脚本

尝试:

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

3
好答案。当然,这是在查询广告... :)
Massimo 2014年

1
我是否需要域管理员权限才能运行此命令?还是域用户本身可以运行此命令?
乔纳森·里约(Jonathan Rioux)2014年

1
任何域用户都可以在AD中查询此类信息。
Massimo 2014年

1
@Massimo并非任何域用户都可以在AD中查询此类信息。无法向用户授予(或拒绝)“读取帐户限制”权限,并且无法从Active Directory查询任何数据
Ian Boyd

15

我喜欢被接受的答案,但仅仅是因为我想自己尝试一下:

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

返回:

FullName
--------
TheCleaner

或者,如果您不希望包含标题信息,而仅获得结果:

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

我读得太快了,它确实查询了AD。我口头撤回我的表决。
MDMoore313 2014年

2
但不需要AD PS模块
squillman 2014年

3
@squillman并非如此,只是给Cleaner带来了困难。
MDMoore313 2014年

知道了 抱歉,一定
不含

7

使用Powershell 3.0的一种衬垫:

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

3

根据您对Craig620接受的答案的评论,

我是否需要域管理员权限才能运行此命令?还是域用户本身可以运行此命令?

听起来您好像想避免在用户工作站上安装Powershell模块,是的,但是,不,您无需成为域管理员即可在AD中查找自己的名字。您可以以标准用户的身份查找几乎所有出现在Outlook GAL中的信息,包括全名。

您还可以在AD中作为标准用户查找其他人的全名(Get-WmiObject Win32_userAccount如果要避免使用AD模块,请使用,)。查询AD的服务帐户(通常在托管服务帐户之前)通常是标准的非特权AD用户。


1

使用-match不是一个好选择,因为$ env:USERNAME的“ ed”将匹配“ fred”和“ edith”。而是使用-eq进行完全匹配,并根据需要添加域。我在末尾使用了一个foreach循环,以去除所有前导空格,以替代“ select fullname | ft -HideTableHeaders”(它打印前导和尾随换行符)。

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

1

如果您始终拥有.Net 3.5或更高版本(PowerShell v4.0和更高版本应具有):

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

该类提供了对所有常见LDAP属性的轻松访问,因此,[ADSISearcher]如果您需要WinNT不会实现的某些扩展属性,则无需两次查找(一次使用WinNT,再一次使用LDAP),也无需进行LDAP搜索。 。


0

如果您不想使用Active Directory模块,则不能使用它。除非您想更深入并针对域控制器执行实际的LDAP查询。

除了用户名以外的任何用户信息都存储在Active Directory中,并且必须在其中进行检索。


但是,当我打开开始菜单时,将在此处显示用户的全名!我的意思是,必须将其存储在某个地方?
乔纳森·里约(Jonathan Rioux)2014年

4
是的,它存储在某个地方。它存储在Active Directory中。
Katherine Villyard 2014年

它可能也存储/缓存在注册表中,但是我并不容易找到并放弃了。
mfinni 2014年

1
的确,它存储在AD中,但[ADSI]接口的长度比AD模块长了很多,而且实际上并没有那么复杂,如公认的答案所示。
Hunter Eidson 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.