현재 도메인 사용자의 전체 이름 검색


23

PowerShell을 사용하여 ActiveDirectory 모듈 없이도 현재 로그온 한 도메인 사용자의 전체 이름 (사용자 이름뿐만 아니라)을 얻으려면 어떻게해야합니까?

답변:


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

보고:

John Doe

다른 (대부분) 모호한 속성도 있습니다. 몇 가지 유용한 것들 :

  • 홈 드라이브 UNC
  • 홈 드라이브 편지
  • 기술
  • 로그인 스크립트

시험:

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

3
좋은 대답입니다. 물론,이 되어 AD 쿼리 ... :)
마시모

1
이 명령을 실행하려면 도메인 관리자 권한이 필요합니까? 또는 도메인 사용자 자체가이 명령을 실행할 수 있습니까?
Jonathan Rioux

1
모든 도메인 사용자는 이러한 종류의 정보에 대해 AD를 쿼리 할 수 ​​있습니다.
Massimo

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

2
그러나 AD PS 모듈이 필요하지 않습니다
squillman

3
@squillman 그것은 Cleaner에게 힘든 시간을주는 것이 아닙니다.
MDMoore313

알았어 죄송합니다, 카페인을 제거해야합니다 ...
squillman

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_userAccountAD 모듈을 사용하지 않으려면을 사용 ). AD를 쿼리하는 서비스 계정 ( 관리 서비스 계정 이전 )은 일반적으로 권한이없는 표준 AD 사용자입니다.


1

"ed"의 $ env : USERNAME이 "fred"및 "edith"와 일치하므로 -match를 사용하는 것은 좋지 않습니다. 대신 정확히 일치하는 경우 -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

4
예, 어딘가에 저장되어 있습니다. Active Directory에 저장됩니다.
Katherine Villyard

아마도 레지스트리에 저장 / 캐시 될 수도 있지만 쉽게 찾지 못하고 포기했습니다.
mfinni

1
그것이 AD에 저장되어 있지만 [ADSI]인터페이스가 AD 모듈보다 훨씬 오래 지속되었으며 실제로 받아 들여지는 답변 쇼처럼 그렇게 복잡하지는 않습니다.
Hunter Eidson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.