답변:
$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
Powershell 3.0을 사용하는 하나의 라이너 :
gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders
Craig620의 승인 된 답변에 대한 귀하의 의견을 바탕으로,
이 명령을 실행하려면 도메인 관리자 권한이 필요합니까? 또는 도메인 사용자 자체가이 명령을 실행할 수 있습니까?
사용자 워크 스테이션에 powershell 모듈을 설치하지 않으려는 것처럼 들리지만 AD에서 자신의 이름을 조회하기 위해 도메인 관리자 일 필요는 없습니다. 표준 이름으로 전체 이름을 포함하여 Outlook의 GAL에 나타나는 모든 정보를 거의 찾을 수 있습니다.
AD에서 다른 사용자의 전체 이름을 표준 사용자로 찾을 수도 있습니다 ( Get-WmiObject Win32_userAccount
AD 모듈을 사용하지 않으려면을 사용 ). AD를 쿼리하는 서비스 계정 ( 관리 서비스 계정 이전 )은 일반적으로 권한이없는 표준 AD 사용자입니다.
"ed"의 $ env : USERNAME이 "fred"및 "edith"와 일치하므로 -match를 사용하는 것은 좋지 않습니다. 대신 정확히 일치하는 경우 -eq를 사용하고 필요한 경우 도메인을 추가하십시오. 끝에 foreach 루프를 사용하여 선행 및 후행 줄 바꿈을 인쇄하는 "select fullname | ft -HideTableHeaders"에 대한 대안으로 후행 공백을 제거합니다.
gwmi win32_useraccount | where {$_.caption -eq $("domain\" + $env:USERNAME)} | foreach {$_.fullname}
항상 .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 모듈보다 훨씬 오래 지속되었으며 실제로 받아 들여지는 답변 쇼처럼 그렇게 복잡하지는 않습니다.