使用PowerShell,如何在不需要ActiveDirectory模块的情况下获得当前登录的域用户的全名(不仅是其用户名)?
使用PowerShell,如何在不需要ActiveDirectory模块的情况下获得当前登录的域用户的全名(不仅是其用户名)?
Answers:
$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").fullname
返回值:
John Doe
其他一些(大多数)晦涩的属性也可以使用。一些有用的:
尝试:
[adsi]"WinNT://$dom/$usr,user" | select *
我喜欢被接受的答案,但仅仅是因为我想自己尝试一下:
$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
如果您始终拥有.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搜索。 。
如果您不想使用Active Directory模块,则不能使用它。除非您想更深入并针对域控制器执行实际的LDAP查询。
除了用户名以外的任何用户信息都存储在Active Directory中,并且必须在其中进行检索。
[ADSI]
接口的长度比AD模块长了很多,而且实际上并没有那么复杂,如公认的答案所示。