خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری
در این مطلب نحوه تنظیم تصویر برای پروفایل کاربران در اکتیودایرکتوری را مورد بررسی قرار خواهیم داد. البته این کار را از طریق اسکریپت پاورشل انجام خواهیم داد.

نرم افزار سامانه مودیان راهکار
اسکریپت ما به شرح زیر عمل خواهد کرد: وقتی کاربر به ویندوز 10 لاگین می کند، باید یک اسکریپت PowerShell اجرا شود. تصویر کاربر را از Attribute ای با نام thumbnailPhoto در Active Directory دریافت شده و سپس در درایو لوکال سیستم کاربر ذخیره می کند و این فایل را به عنوان تصویر پروفایل حساب کاربری در پروفایل فعلی تنظیم می کند. این کار در ویندوز 7 و بعد از آن کار می کند.



How to Set Photo for an Active Directory User?

در گام نخست باید تصویر کاربر را در Attribute مذکور یعنی thumbnailPhoto باید آپلود شود. اینکار را هم از طریق ابزارهای third-party و هم از طریق ActiveDirectory module for Windows PowerShell می توانید انجام دهید. توجه داشته باشید که حداکثر حجم یک عکس باید 100 کیلوبیت(kb) و resolution هم در ابعاد 96 × 96 باید باشد.
به عنوان مثال کاربری با نام jchan داریم که تصویر پروفایل را برای آن تنظیم می کنیم:

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

در دستور فوق به جای مسیر و نام تصویر ذکر شده باید نام و مسیر تصویر خودتان را جایگزین کنید و به جای نام کاربر هم Username مورد نظر خودتان را جایگزین کنید.

Providing Permissions to Users to Change Profile Picture in Windows

در ویندوز می توانید از طریق مسیر HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users تصویر پروفایل برای کاربر مورد نظرتان تنظیم کنید. از آنجایی که کاربران عادی یا غیر ادمین نمی توانند مقادیر رجیستری را تغییر دهند پس باید به users ها هم امکان تغییر مقدار مورد نظر در مسیر مورد نظر در رجیستری را دهیم. استقرار مجوزهای کلیدهای رجیستری در دامین با استفاده از GPO بسیار ساده است.
به کنسول Group Policy Management console با اجرای دستور gpmc.msc در Run وارد شوید. سپس یک GPO جدید ایجاد کرده و آن را به OU ای که Computer های کاربران در آن ذخیره شده، لینک دهید.
سپس روی پالیسی مروبطه کلیک راست کرده و گزینه edit را کلیک کنید.
حالا مسیر زیر در پالیسی دنبال کنید:

Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Registry

سپس روی فولدر Registry کلیک راست کرده و گزینه Add key را کلیک کنید. در پنجره باز شده مسیر زیر را کپی و Paste کنید(در قسمت Selected key).

MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری
سپس فرم را OK کنید. حالا باید مجوز را مشخص کنید. از لیست ACL، آیتم Users(YourDomainName\Users) را انتخاب کرده و از لیست پایین گزینه Full Control را فعال کنید.
در مرحله بعدی، گزینه Replace existing permission on all sub keys with inheritable permissions را فعال کنید چرا که در غیر اینصورت کاربرانی هیچ گونه مجوزی برای تغییر در کلیدهای تو در تو در این مسیر دریافت نمی کنند.

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری

PowerShell Script to Get the AD User’s Photo and Set the User Profile Picture in Windows

حالا ما باید یک اسکریپت PowerShell را اجرا کنیم که می بایست عکس کاربر فعلی را از Active Directory دریافت کرده و آن را در فرمت یک فایل jpg ذخیره کرده و به عنوان عکس پروفایل کاربر ویندوز تنظیم کند. برای دریافت عکس کاربر از AD دو روش وجود دارد. می توانید از دستور Get-ADUser از ActiveDirectory module استفاده کنید (این ماژول باید از طریق RSAT روی همه کامپیوترها نصب شود، یا فقط می توانید فایل های RSAT-AD-PowerShell module لازم را بدون نصب RSAT کپی کنید). از آنجایی که اسکریپت باید universal باشد و در ویندوز 7 هم کار کند، از RSAT-AD-PowerShell module استفاده نمی کنیم. اما از طریق کلاس ADSISearcher C# class می توانیم به این مهم برسیم.

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

همین دستور فوق را در Noetpad کپی کرده و سپس آن را با فرمت PS1 ذخیره کنید.

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری
اسکریپت فوق تصویر کاربر را از thumbnailphoto دریافت کرده و در مسیر C:\Users\Public\AccountPictures\{User SID} ذخیره می کند. این فولدر شامل فایل هایی با فرمت تصویر با رزولوشن های مختلف (از 32 × 32 تا 448 × 448 پیکسل) برای عناصر مختلف ویندوز 10 است.
انتصاب تصویر به پروفایل کاربر از طریق پارامتر در رجیستری ویندوز در مسیر زیر انجام می شود:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{User_SID

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری

Running PowerShell Script to Bind Photos to a Profile Using GPO

حالا ما قصد داریم از اسکریپت SetADPicture.ps1 در زمان user logon استفاده کنیم. یعنی اسکریپت در user logon اجرا شود. در دامین کنترلر به فولدر Share شده netlogon وارد شوید و فولدری با نام script ایجاد کنید و فایل SetADPicture.ps1 را در آن کپی کنید. سپس به سراغ همان GPO که چندی پیش ایجاد کرده بودید بروید. در آن به مسیر زیر بروید:

User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff)

سپس روی logon دابل کلیک کنید. در فرم زیر در تب scripts، دکمه add را زده و سپس مقادیر زیر را جایگزین کنید:

The script name: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
The script parameters: -Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری
سپس فرم ها را OK کنید. کار دیگری که در گروپ پالیسی باید انجام دهید، این است که مسیر زیر را دنبال کنید:

Computer Configuration -> Administrative Templates -> System -> Group Policy

در این مسیر پالیسی Configure user Group Policy Loopback Processing mode را مشاهده خواهید کرد.
روی پالیسی مذکور دابل کلیک کنید تا فرم تنظیمات آن باز شود. در این پالیسی گزینه enabled را فعال کرده و سپس از کامبوباکس Options در قسمت پایین، آیتم Merge را انتخاب کرده و سپس ok کنید.

تنظیم عکس برای پروفایل کاربران تعریف شده در اکتیودایرکتوری
سپس همین پالیسی را به OU ای که کاربران شما در آن ایجاد شده اند هم لینک دهید.
سپس سیستم کلاینت مربوطه را ریستارت کنید. پس از اینکه سیستم اینکه ریستارت شد و پسورد کاربر را وارد کردید، لحظاتی منتظر بمانید تا اسکریپت اجرا شود. حالا اگر با فشردن کلیدهای Windows key + L ویندوز را Lock کنید خواهید دید که تصویر پروفایل تغییر کرده است.

نمایش دیدگاه ها (4 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز