Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

Outlook, SharePoint, 비즈니스용 Skype(Skype for Business), Office 365 등 Microsoft 애플리케이션에서는 현재 로그인한 사용자의 Active Directory(또는 Azure AD) 사진을 인터페이스의 사용자 아바타로 활용할 수 있습니다. 이 글에서는 그룹 정책(GPO)과 PowerShell 스크립트를 사용하여 Active Directory의 사용자 사진을 Windows 10의 사용자 프로필 사진(아바타)으로 설정하는 방법을 소개합니다. Windows 프로필 사진은 잠금 화면, 시작 화면(Welcome Screen), 시작 메뉴 등 다양한 위치에 표시됩니다.

이 스크립트의 작동 방식은 다음과 같습니다. 사용자가 Windows 10에 로그온하면 PowerShell 스크립트가 실행되고, Active Directory의 thumbnailPhoto 사용자 특성에서 사진을 가져와 로컬 드라이브에 저장한 후, 이 파일을 현재 프로필의 사용자 계정 사진으로 설정합니다. 이 솔루션은 Windows 10, 8.1, 7을 비롯한 모든 지원 클라이언트와 Windows Server 2016/2012 R2 기반 RDS 호스트에서도 작동합니다.

Active Directory 사용자에게 사진 설정하기

먼저 AD 사용자의 사진을 설정하려면 이미지 파일을 사용자의 thumbnailPhoto 특성에 업로드해야 합니다. 사용자 사진은 서드파티 도구를 사용하거나 Windows PowerShell용 ActiveDirectory 모듈을 통해 설정할 수 있습니다. 아바타 이미지 파일의 최대 크기는 100KB를 초과할 수 없으며, 이미지 해상도는 최대 96×96픽셀이어야 한다는 점에 유의하세요. 사용자 jchan의 AD 계정 이미지는 다음과 같이 설정할 수 있습니다:

$photo = [byte[]](Get-Content C:\PS\jchan_photo.jpg -Encoding byte)
Set-ADUser jchan -Replace @{thumbnailPhoto=$photo}

Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

PowerShell을 사용하여 AD 사용자 사진을 관리하는 자세한 방법은 "How to Import User Photo to Active Directory" 문서를 참고하세요.

Windows에서 프로필 사진 변경 권한 부여하기

Windows 10에서는 레지스트리 키 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users를 통해 사용자 계정 프로필 사진을 설정할 수 있습니다. 하지만 관리자가 아닌 일반 사용자에게는 이 레지스트리 키에 값을 추가할 권한이 없습니다. 관리자 권한이 없는 사용자도 프로필 사진을 변경할 수 있도록 하려면 이 레지스트리 키에 대한 쓰기 권한을 부여해야 합니다.

레지스트리 키 권한은 AD 도메인에서 GPO를 통해 배포하는 것이 가장 간편합니다:

  1. 그룹 정책 관리 콘솔(gpmc.msc)을 실행하고 새 정책을 생성한 후, 사용자 컴퓨터가 속한 OU에 연결합니다.
  2. GPO 편집기에서 컴퓨터 구성 -> 정책 -> Windows 설정 -> 보안 설정 -> 레지스트리 섹션으로 이동하여 MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users 경로로 새 레지스트리 키를 추가합니다(키 추가).Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법
  3. 보안 탭에서 모든 도메인 사용자([도메인이름]\Users)에게 모든 권한(Full Control)을 부여하고 확인을 클릭합니다.
  4. 다음 창에서 기존 하위 키의 사용 권한을 상속 가능한 사용 권한으로 바꾸기 옵션을 선택합니다. 이 옵션을 선택하지 않으면 사용자가 하위 레지스트리 키에 대한 권한을 갖지 못합니다.Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

AD 사용자 사진을 가져와 Windows 10 프로필 사진으로 설정하는 PowerShell 스크립트

다음으로, 현재 사용자의 사진을 Active Directory에서 가져와 jpg 파일로 저장한 후 Windows 사용자 프로필 사진으로 설정하는 PowerShell 스크립트를 실행해야 합니다. AD에서 사용자 사진을 가져오는 방법은 두 가지가 있습니다. ActiveDirectory 모듈의 Get-ADUser cmdlet을 사용하는 방법이 있는데, 이 모듈은 RSAT를 통해 모든 컴퓨터에 설치해야 하며 RSAT를 설치하지 않고 필요한 RSAT-AD-PowerShell 모듈 파일만 복사할 수도 있습니다. 하지만 스크립트가 보편적으로 작동하고 Windows 7에서도 작동해야 하므로, 여기서는 RSAT-AD-PowerShell 모듈 대신 ADSISearcher C# 클래스를 통해 AD에 접근합니다.

AD에서 사용자 사진을 가져와 Windows 계정 아바타로 설정하는 SetADPicture.ps1 스크립트의 예시는 다음과 같습니다:

[CmdletBinding(SupportsShouldProcess=$true)]Param()
function Test-Null($InputObject) { return !([bool]$InputObject) }
$ADuser = ([ADSISearcher]"(&(objectCategory=User)(SAMAccountName=$env:username))").FindOne().Properties
$ADuser_photo = $ADuser.thumbnailphoto
$ADuser_sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
If ((Test-Null $ADuser_photo) -eq $false) {
  $img_sizes = @(32, 40, 48, 96, 192, 200, 240, 448)
  $img_mask = "Image{0}.jpg"
  $img_base = "C:\Users\Public\AccountPictures"
  $reg_base = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{0}"
  $reg_key = [string]::format($reg_base, $ADuser_sid)
  $reg_value_mask = "Image{0}"
  If ((Test-Path -Path $reg_key) -eq $false) { New-Item -Path $reg_key }
  Try {
    ForEach ($size in $img_sizes) {
      $dir = $img_base + "\" + $ADuser_sid
      If ((Test-Path -Path $dir) -eq $false) { $(mkdir $dir).Attributes = "Hidden" }
      $file_name = ([string]::format($img_mask, $size))
      $path = $dir + "\" + $file_name
      Write-Verbose " saving: $file_name"
      $ADuser_photo | Set-Content -Path $path -Encoding Byte -Force
      $name = [string]::format($reg_value_mask, $size)
      $value = New-ItemProperty -Path $reg_key -Name $name -Value $path -Force
    }
  }
  Catch {
    Write-Error "Check permissions to files or registry."
  }
}

이 스크립트는 현재 AD 사용자의 thumbnailphoto 특성 값을 가져와 로컬 폴더 C:\Users\Public\AccountPictures\{사용자 SID}에 저장합니다. 이 폴더에는 Windows 10 인터페이스의 다양한 요소를 위한 여러 해상도(32×32부터 448×448픽셀까지)의 이미지 파일(image32.jpg, image40.jpg 등)이 포함됩니다.

Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

사진과 사용자 프로필의 연결은 레지스트리 키 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{사용자_SID}의 매개변수를 통해 수행됩니다.

Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

GPO를 사용하여 프로필에 사진을 연결하는 PowerShell 스크립트 실행하기

이제 사용자가 Windows에 로그온할 때 SetADPicture.ps1 스크립트가 실행되도록 설정해야 합니다. GPO 로그온 스크립트를 사용하는 것이 가장 간편합니다.

앞서 생성한 정책의 사용자 구성 -> 정책 -> Windows 설정 -> 스크립트(로그온/로그오프) 섹션에서 새 PowerShell 로그온 스크립트를 생성합니다:

  • 스크립트 이름: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • 스크립트 매개변수: -Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

중요: SetADPicture.ps1 스크립트는 미리 도메인 컨트롤러의 netlogon\script\ 폴더에 복사해 두어야 합니다.

정책 설정에서 GPO 루프백 처리 모드를 활성화합니다(컴퓨터 구성 -> 관리 템플릿 -> 시스템 -> 그룹 정책 -> 사용자 그룹 정책 루프백 처리 모드 구성 = 병합(Merge)). 이 모드에서는 사용자 계정이 속한 OU에 정책을 적용할 수 있습니다.Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

이제 정책을 특정 OU에 연결하고, 로그오프한 후 Windows에 다시 로그인하기만 하면 됩니다.

대상 컴퓨터에서 GPO 적용 상태를 진단하려면 gpresult 도구를 활용하세요.

Windows 10에서 Active Directory 사진을 사용자 프로필 사진으로 설정하는 방법

다음 로그온 후 Windows 10 사용자 프로필에 아바타가 할당되며, 시작 메뉴, 시작 화면(Welcome Screen) 등 다양한 위치에서 계정 사진으로 올바르게 표시됩니다. 이 프로필 사진 할당 가이드는 Windows 10 LTSC(1809)에서 테스트되었습니다.