使用 PowerShell,如何才能获取当前登录的域用户的全名(而不仅仅是其用户名),而不需要 ActiveDirectory 模块?
答案1
$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").fullname
返回:
John Doe
还有一些其他 (大多数) 不太明显的属性。以下是一些有用的属性:
- 北卡罗来纳大学 Homedrive
- 回家的信
- 描述
- 登录脚本
尝试:
[adsi]"WinNT://$dom/$usr,user" | select *
答案2
我喜欢接受的答案,但只是因为我想自己尝试一下:
$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
答案3
使用Powershell 3.0的一个衬垫:
gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders
答案4
如果您一直拥有.Net 3.5 或更高版本(您应该使用 PowerShell v4.0 及更高版本):
Add-Type -AssemblyName System.DirectoryServices.AccountManagement;
$DisplayName = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.DisplayName;
[ADSISearcher]
该类提供对所有常见 LDAP 属性的非常容易的访问,因此如果您想要一些 WinNT 未实现的扩展属性,您不需要查找两次(一次使用 WinNT,再次使用 LDAP)或使用执行 LDAP 搜索。