Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

Outlook, SharePoint, Skype for Business, Office365 และแอป Microsoft อื่นๆ อนุญาตให้คุณใช้รูปภาพ Active Directory (หรือ Azure AD) ของผู้ใช้ที่ล็อกอินอยู่เป็น avatar ในอินเทอร์เฟซของพวกเขา ในบทความนี้ เราจะแสดงวิธีใช้ Group Policy และสคริปต์ PowerShell เพื่อตั้งค่ารูปภาพผู้ใช้จาก Active Directory เป็นรูปโปรไฟล์ผู้ใช้ (avatar) ใน Windows 10 (รูปโปรไฟล์ Windows แสดงบน Lock Screen, Welcome Screen, ใน Start Menu ฯลฯ)

สคริปต์ของเราจะทำงานดังนี้: เมื่อผู้ใช้ล็อกอินเข้าสู่ Windows 10 สคริปต์ PowerShell ต้องถูกรัน มันจะดึงรูปภาพของผู้ใช้จากแอตทริบิวต์ thumbnailPhoto ของผู้ใช้ใน Active Directory บันทึกไฟล์รูปภาพลงในดิสก์ท้องถิ่น และตั้งค่าไฟล์นี้เป็นรูปภาพบัญชีผู้ใช้ในโปรไฟล์ปัจจุบัน โซลูชันควรทำงานบนไคลเอ็นต์ที่รองรับทั้งหมด: Windows 10, 8.1, 7 และบน RDS hosts ที่รัน Windows Server 2016/2012 R2

วิธีตั้งค่ารูปภาพสำหรับผู้ใช้ Active Directory

ขั้นแรก ตั้งค่ารูปภาพสำหรับผู้ใช้ AD โดยอัปโหลดไฟล์รูปภาพไปยังแอตทริบิวต์ thumbnailPhoto ของผู้ใช้พิเศษ คุณสามารถตั้งค่ารูปภาพผู้ใช้โดยใช้เครื่องมือของบุคคลที่สาม หรือใช้โมดูล ActiveDirectory สำหรับ Windows PowerShell โปรดทราบว่า ขนาดไฟล์รูปภาพ avatar สูงสุดต้องไม่เกิน 100 Kb ด้วยความละเอียดรูปภาพสูงสุด 96 × 96 พิกเซล คุณสามารถตั้งค่ารูปภาพบัญชี AD สำหรับผู้ใช้ jchan ได้ดังนี้:

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

วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

เราได้พิจารณาอย่างละเอียดเกี่ยวกับการจัดการรูปภาพผู้ใช้ AD โดยใช้ PowerShell ในบทความ How to Import User Photo to Active Directory

การให้สิทธิ์ผู้ใช้เพื่อเปลี่ยนรูปโปรไฟล์ใน Windows

ใน Windows 10 คุณสามารถตั้งค่ารูปโปรไฟล์บัญชีผู้ใช้ผ่านคีย์รีจิสทรี HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users อย่างไรก็ตาม ผู้ใช้ที่ไม่ใช่แอดมินไม่มีสิทธิ์ที่จำเป็นในการเพิ่มค่าในคีย์รีจิสที้นี้ เพื่ออนุญาตให้ผู้ใช้ที่ไม่มีสิทธิ์ administrator เปลี่ยนรูปโปรไฟล์ คุณต้องให้สิทธิ์เขียนไปยังคีย์รีจิสที้นี้

การปรับใช้สิทธิ์คีย์รีจิสทรีในโดเมน AD โดยใช้ GPO ทำได้ง่ายกว่า:

  1. รันคอนโซล Group Policy Management (gpmc.msc) สร้างนโยบายใหม่และเชื่อมโยงกับ OU ที่มีคอมพิวเตอร์ของผู้ใช้
  2. จากนั้นใน GPO editor ไปที่ส่วนต่อไปนี้ Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Registry และเพิ่มคีย์รีจิสทรีใหม่ (Add key) ด้วยเส้นทาง MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users;วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10
  3. จากนั้นในแท็บ Security ตรวจสอบสิทธิ์ Full Control สำหรับผู้ใช้โดเมนทั้งหมด ( [DomainName]\Users) และคลิก OK
  4. ในหน้าต่างถัดไป เลือกตัวเลือก Replace existing permission on all sub keys with inheritable permissions มิฉะนั้น ผู้ใช้จะไม่มีสิทธิ์สำหรับ nested registry subkeys ใดๆวิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

สคริปต์ PowerShell เพื่อดึงรูปภาพ AD User และตั้งค่ารูปโปรไฟล์ผู้ใช้ใน Windows 10

จากนั้นเราต้องรันสคริปต์ PowerShell ที่ควรดึงรูปภาพของผู้ใช้ปัจจุบันจาก Active Directory บันทึกเป็นไฟล์ jpg และตั้งค่าเป็นรูปภาพบัญชีผู้ใช้ Windows มีสองวิธีในการดึงรูปภาพผู้ใช้จาก AD คุณสามารถใช้คอมมานด์เลต Get-ADUser จากโมดูล ActiveDirectory (โมดูลนี้ต้องติดตั้งบนคอมพิวเตอร์ทั้งหมดผ่าน RSAT หรือคุณสามารถคัดลอกไฟล์ RSAT-AD-PowerShell module ที่จำเป็นโดยไม่ติดตั้ง RSAT) เนื่องจากสคริปต์ต้องเป็น universal และทำงานใน Windows 7 ด้วย เราจะไม่ใช้โมดูล RSAT-AD-PowerShell แต่จะเข้าถึง AD ผ่านคลาส C# ADSISearcher

ตัวอย่างของสคริปต์ SetADPicture.ps1 เพื่อดึงรูปภาพผู้ใช้จาก AD และตั้งค่าเป็นรูป avatar บัญชี Windows กำหนดไว้ด้านล่าง:

[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."
}
}

สคริปต์ดึงค่าของแอตทริบิวต์ thumbnailphoto ของผู้ใช้ AD ปัจจุบันและบันทึกลงในโฟลเดอร์ท้องถิ่น C:\Users\Public\AccountPictures\{User SID} โฟลเดอร์จะมีไฟล์รูปภาพที่มีความละเอียดต่างๆ (จาก 32×32 ถึง 448×448 พิกเซล) สำหรับองค์ประกอบอินเทอร์เฟซ Windows 10 ที่แตกต่างกัน: image32.jpg, image40.jpg ฯลฯ

วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

การผูกมัดรูปภาพกับโปรไฟล์ผู้ใช้ดำเนินการผ่านพารามิเตอร์ในคีย์รีจิสทรี HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{User_SID}

วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

การรันสคริปต์ PowerShell เพื่อผูกมัดรูปภาพกับโปรไฟล์โดยใช้ GPO

ตอนนี้เราต้องการรันสคริปต์ SetADPicture.ps1 เมื่อผู้ใช้ล็อกอินเข้าสู่ Windows ทำได้ง่ายด้วย GPO logon script

ในการทำเช่นนั้น ในนโยบายที่สร้างไว้ก่อนหน้าในส่วน User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff) สร้าง PowerShell logon script ใหม่:

  • ชื่อสคริปต์: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • พารามิเตอร์สคริปต์: -Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

สำคัญ: สคริปต์ SetADPicture.ps1 ต้องถูกคัดลอกไปยังโฟลเดอร์ netlogon\script\ บน domain controller ก่อนหน้านี้

ในการตั้งค่านโยบาย ให้เปิดใช้งาน GPO loopback processing mode (Computer Configuration -> Administrative Templates -> System -> Group Policy -> Configure user Group Policy Loopback Processing mode = Merge) ในโหมดนี้ คุณสามารถนำโนยบายไปใช้กับ OU ที่มีบัญชีผู้ใช้ได้วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

คุณเพียงแค่ต้องเชื่อมโยงนโยบายกับ OU เฉพาะ ล็อกออฟและล็อกอินเข้าสู่ Windows อีกครั้ง

เพื่อวินิจฉัย GPO บนคอมพิวเตอร์เป้าหมาย ให้ใช้เครื่องมือ gpresult และบทความ “Group Policy not applying”

วิธีใช้รูปภาพ AD เป็นรูปโปรไฟล์ผู้ใช้ใน Windows 10

Avatar จะถูกมอบหมายให้กับโปรไฟล์ผู้ใช้ Windows 10 และจะแสดงอย่างถูกต้องเป็นรูปภาพบัญชีใน Start menu, Welcome Screen และสถานที่อื่นๆ หลังจากล็อกอินครั้งต่อไป คู่มือการกำหนดรูปโปรไฟล์นี้ได้รับการทดสอบบน Windows 10 LTSC (1809)