Outlook, SharePoint, Skype for Business, Office365 और अन्य Microsoft ऐप्स आपको वर्तमान में लॉग-इन यूज़र की Active Directory (या Azure AD) फ़ोटो को उनके इंटरफ़ेस में यूज़र अवतार के रूप में उपयोग करने की अनुमति देते हैं। इस लेख में, हम आपको दिखाएंगे कि Group Policy और PowerShell स्क्रिप्ट का उपयोग करके Active Directory से यूज़र फ़ोटो को Windows 10 में यूज़र प्रोफ़ाइल पिक्चर (अवतार) के रूप में कैसे सेट करें (Windows प्रोफ़ाइल पिक्चर लॉक स्क्रीन, वेलकम स्क्रीन, स्टार्ट मेनू आदि पर प्रदर्शित होती है)।
हमारा स्क्रिप्ट इस तरह काम करेगा: जब कोई यूज़र Windows 10 में लॉग ऑन करता है, तो एक PowerShell स्क्रिप्ट चलनी चाहिए; यह Active Directory में thumbnailPhoto यूज़र एट्रिब्यूट से यूज़र की फ़ोटो प्राप्त करता है, इमेज फ़ाइल को लोकल ड्राइव पर सेव करता है और इस फ़ाइल को वर्तमान प्रोफ़ाइल में यूज़र अकाउंट पिक्चर के रूप में सेट करता है। समाधान सभी समर्थित क्लाइंट पर काम करना चाहिए: Windows 10, 8.1, 7 और Windows Server 2016/2012 R2 चलाने वाले RDS होस्ट।
Active Directory यूज़र के लिए फ़ोटो कैसे सेट करें?
सबसे पहले, थर्ड-पार्टी टूल्स का उपयोग करके या Windows PowerShell के लिए ActiveDirectory मॉड्यूल का उपयोग करके इमेज फ़ाइलों को यूज़र के विशेष एट्रिब्यूट thumbnailPhoto में अपलोड करके AD यूज़र्स के लिए फ़ोटो सेट करें। कृपया ध्यान दें कि अधिकतम अवतार इमेज फ़ाइल आकार 100 Kb से अधिक नहीं होना चाहिए और इमेज रिज़ॉल्यूशन 96 × 96 पिक्सल तक होना चाहिए। आप jchan यूज़र के लिए AD अकाउंट इमेज को निम्नानुसार सेट कर सकते हैं:
$photo = [byte[]](Get-Content C:\PS\jchan_photo.jpg -Encoding byte)
Set-ADUser jchan -Replace @{thumbnailPhoto=$photo}
हमने PowerShell का उपयोग करके AD यूज़र फ़ोटो को प्रबंधित करने के बारे में विस्तार से लेख How to Import User Photo to Active Directory में चर्चा की है।
Windows में प्रोफ़ाइल पिक्चर बदलने के लिए यूज़र्स को अनुमति प्रदान करना
Windows 10 में आप रजिस्ट्री कुंजी HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users के माध्यम से यूज़र अकाउंट प्रोफ़ाइल पिक्चर सेट कर सकते हैं। हालांकि, नॉन-एडमिन यूज़र्स के पास इस रजिस्ट्री कुंजी में मान जोड़ने के लिए आवश्यक अनुमतियां नहीं होती हैं। प्रशासक विशेषाधिकारों के बिना यूज़र्स को प्रोफ़ाइल पिक्चर बदलने की अनुमति देने के लिए, आपको उन्हें इस रजिस्ट्री कुंजी पर लिखने की अनुमति देनी होगी।
AD डोमेन में GPO का उपयोग करके रजिस्ट्री कुंजी अनुमतियों को तैनात करना आसान है:
- ऐसा करने के लिए, Group Policy Management कंसोल (gpmc.msc) चलाएं, एक नई पॉलिसी बनाएं और इसे यूज़र्स के कंप्यूटर वाले OU से लिंक करें;
- फिर GPO एडिटर में निम्न अनुभाग पर जाएं Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Registry और पथ MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users के साथ एक नई रजिस्ट्री कुंजी जोड़ें (Add key);

- फिर, Security टैब में, सभी डोमेन यूज़र्स ( [DomainName]\Users) के लिए Full Control अनुमतियों को चेक करें और OK पर क्लिक करें;
- अगली विंडो में, विकल्प Replace existing permission on all sub keys with inheritable permissions चुनें, अन्यथा यूज़र्स को नेस्टेड रजिस्ट्री सबकीज़ के लिए कोई विशेषाधिकार नहीं होगा।

AD यूज़र की फ़ोटो प्राप्त करने और Windows 10 में यूज़र प्रोफ़ाइल पिक्चर सेट करने के लिए PowerShell स्क्रिप्ट
फिर हमें एक PowerShell स्क्रिप्ट चलाने की आवश्यकता है जो वर्तमान यूज़र की फ़ोटो को Active Directory से प्राप्त करे, इसे jpg फ़ाइल में सेव करे और इसे Windows यूज़र प्रोफ़ाइल पिक्चर के रूप में सेट करे। AD से यूज़र फ़ोटो प्राप्त करने के दो तरीके हैं। आप ActiveDirectory मॉड्यूल से Get-ADUser cmdlet का उपयोग कर सकते हैं (यह मॉड्यूल RSAT के माध्यम से सभी कंप्यूटरों पर इंस्टॉल होना चाहिए, या आप RSAT इंस्टॉल किए बिना केवल आवश्यक RSAT-AD-PowerShell मॉड्यूल फ़ाइलों को कॉपी कर सकते हैं)। चूंकि स्क्रिप्ट को यूनिवर्सल होना चाहिए और Windows 7 में भी काम करना चाहिए, हम RSAT-AD-PowerShell मॉड्यूल का उपयोग नहीं करेंगे, लेकिन ADSISearcher C# क्लास के माध्यम से AD को एक्सेस करेंगे।
SetADPicture.ps1 स्क्रिप्ट का एक उदाहरण जो AD से यूज़र की फ़ोटो प्राप्त करता है और इसे 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."
}
}
स्क्रिप्ट वर्तमान AD यूज़र के thumbnailphoto एट्रिब्यूट का मान प्राप्त करती है और इसे लोकल फ़ोल्डर C:\Users\Public\AccountPictures\{User SID} में सेव करती है। फ़ोल्डर में अलग-अलग रिज़ॉल्यूशन (32×32 से 448×448 पिक्सल तक) वाली पिक्चर फ़ाइलें होंगी विभिन्न Windows 10 इंटरफ़ेस तत्वों के लिए: image32.jpg, image40.jpg, आदि।
फ़ोटो को यूज़र प्रोफ़ाइल से बांधना रजिस्ट्री कुंजी HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{User_SID} में पैरामीटर के माध्यम से किया जाता है।

GPO का उपयोग करके फ़ोटो को प्रोफ़ाइल से बांधने के लिए PowerShell स्क्रिप्ट चलाना
अब हम चाहते हैं कि जब कोई यूज़र Windows में लॉग ऑन करे तो SetADPicture.ps1 स्क्रिप्ट चले। इसे GPO लॉगऑन स्क्रिप्ट का उपयोग करके करना आसान है।
ऐसा करने के लिए, पहले बनाई गई पॉलिसी में अनुभाग User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff) में एक नई PowerShell लॉगऑन स्क्रिप्ट बनाएं:
- स्क्रिप्ट नाम:
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe - स्क्रिप्ट पैरामीटर:
-Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

महत्वपूर्ण. SetADPicture.ps1 स्क्रिप्ट को पहले डोमेन कंट्रोलर पर netlogon\script\ फ़ोल्डर में कॉपी किया जाना चाहिए।
पॉलिसी सेटिंग्स में, GPO लूपबैक प्रोसेसिंग मोड सक्षम करें (Computer Configuration -> Administrative Templates -> System -> Group Policy -> Configure user Group Policy Loopback Processing mode = Merge)। इस मोड में, आप यूज़र अकाउंट वाले OU पर पॉलिसी लागू कर सकते हैं।
आपको बस पॉलिसी को विशिष्ट OU से लिंक करना है, Windows से लॉग ऑफ और फिर से लॉग इन करना है।
लक्ष्य कंप्यूटर पर GPO का निदान करने के लिए, gpresult टूल और लेख "Group Policy not applying" का उपयोग करें।

अगले लॉगऑन के बाद Windows 10 यूज़र प्रोफ़ाइल को एक अवतार असाइन किया जाएगा, और यह स्टार्ट मेनू, वेलकम स्क्रीन और अन्य स्थानों पर अकाउंट पिक्चर के रूप में सही ढंग से प्रदर्शित होगा। यह प्रोफ़ाइल फ़ोटो असाइनमेंट गाइड Windows 10 LTSC (1809) पर टेस्ट किया गया है।