שימוש בתמונת משתמש של Active Directory כתמונת כניסה לחשבון ב- Windows
רוב יישומי Microsoft Office (Outlook, SharePoint, Office365, Skype for Business וכן הלאה) מאפשרים שימוש בתמונת Active Directory (Azure AD) של המשתמש המחובר כעת כאוואטאר של המשתמש בממשק שלו. במאמר זה, נראה לך כיצד להשתמש בתמונה של משתמש Active Directory כתמונת כניסה לחשבון (אוואטאר) עבור פרופיל משתמש של Windows המופיע במסך הנעילה, במסך הפתיחה, בתפריט התחלה וכן הלאה.
עבור משימה זו, נשתמש בסקריפט כניסה קטן של PowerShell. קובץ ה- Script אמור לפעול כאשר המשתמש נכנס ל- Windows, לקבל את תמונת המשתמש מ- Active Directory (התכונה thumbnailPhoto) ולהגדיר אותה כתמונת הפרופיל של פרופיל המשתמש של Windows.
כיצד להוסיף תמונות עבור משתמשי Active Directory?
תמונת המשתמש מאוחסנת בתכונה מיוחדת (
thumbnailPhoto) של החשבון ב- Active Directory. באפשרותך להגדיר תמונות עבור המשתמשים שלך באמצעות כלים של ספקים חיצוניים, או באמצעות cmdlet Set-ADUser ממודול Active Directory עבור Windows PowerShell.
-
שמור את תמונת המשתמש בדיסק בתבנית JPEG/BMP (גודל קובץ תמונת האווטאר המרבי לא יעלה על 100 KB ורזולוציית התמונה עד 96×96 פיקסלים);
כדי להגדיר את תמונת חשבון AD עבור משתמש
jchanהפעל את הפקודות:
$photo = [byte[]](Get-Content C:\PS\jchan_photo.jpg -Encoding byte) Set-ADUser jchan -Replace @{thumbnailPhoto=$photo}פתח את מסוף המשתמשים והמחשבים של Active Directory (ADUC), עבור לכרטיסיה עורך תכונות ובדוק אם התכונה thumbnailPhoto מכילה כעת ערך.
לקבלת פרטים נוספים על אופן הניהול של תמונות משתמשים ב- AD, עיין בפוסט "כיצד להוסיף או לעדכן תמונת משתמש ב- Active Directory? ”
יצירת GPO כדי להחיל תמונת פרופיל של חשבון ב- Windows
כעת עליך להגדיר מדיניות קבוצתית של תחום שתגדיר את אפשרויות הסביבה לשימוש בתמונות משתמש של Active Directory כתמונות הכניסה לחשבון במחשבי Windows.
פתח את מסוף ניהול המדיניות הקבוצתית (
gpmc.msc). ליצור GPO חדש ולקשר אותו ל-OU (יחידה ארגונית) המכילה את מחשבי המשתמשים;
ב- Windows, באפשרותך להגדיר את תמונת האוואטאר של המשתמש (הנתיב לקובץ JPG המשמש עבור פרופיל המשתמש) באמצעות מפתח הרישום HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users. עליך לאפשר למשתמשים לשנות את תמונת הפרופיל שלהם ישירות דרך הרישום;
-
באפשרותך לפרוס את הרשאות מפתח הרישום בתחום AD באמצעות GPO. נווט אל המקטע GPO תצורת מחשב -> מדיניות -> הגדרות Windows -> הגדרות אבטחה -> רישום. צור מפתח רישום חדש (הוסף מפתח) עם הנתיב MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users;
הענקת הרשאות שליטה מלאה לקבוצה 'משתמשי תחום' (
[DomainName]\Users) במסך אבטחת מסד נתונים;
בחלון הבא, בחר באפשרות החלף הרשאה קיימת בכל מפתחות המשנה בהרשאות הניתנות לירושה, אחרת, למשתמשים לא יהיו הרשאות למפתחות משנה מקוננים של הרישום;
הפעל את האפשרות GPO קביעת תצורה של מדיניות קבוצתית של המשתמש מצב עיבוד לולאה חוזרת=מיזוג (תצורת מחשב -> תבניות מנהליות -> מערכת -> מדיניות קבוצתית). זה יאפשר לך להחיל את המדיניות על OU עם חשבונות מחשב.
הגדרת תמונת פרופיל של חשבון משתמש ב- Windows באמצעות PowerShell
לאחר מכן, עליך ליצור קובץ script של PowerShell שיקבל את תמונת המשתמש הנוכחי מ- Active Directory, לשמור אותה בקובץ JPG ולהגדיר אותה כתמונת הפרופיל של המשתמש.
ישנן שתי דרכים להשיג תמונה של משתמש מ-AD. באפשרותך להשתמש ב- cmdlet Get-ADUser ממודול ActiveDirectory (מודול זה חייב להיות מותקן בכל המחשבים באמצעות RSAT, או שאתה יכול פשוט להעתיק את קבצי מודול RSAT-AD-PowerShell הדרושים מבלי להתקין RSAT). על מנת שהסקריפט יהיה אוניברסלי ויעבוד כראוי מבלי להתקין RSAT (כולל ב- Windows 7), נחבר AD באמצעות מחלקת ADSISearcher.
קוד סקריפט SetADPicture.ps1:
Function ResizeImage {
Param (
[Parameter(Mandatory = $True, HelpMessage = "image in byte")]
[ValidateNotNull()]
$imageSource,
[Parameter(Mandatory = $true, HelpMessage = "Betwwen 16 and 1000")]
[ValidateRange(16, 1000)]
$canvasSize,
[Parameter(Mandatory = $true, HelpMessage = "Between 1 and 100")]
[ValidateRange(1, 100)]
$ImgQuality = 100
)
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$imageBytes = [byte[]]$imageSource
$ms = New-Object IO.MemoryStream($imageBytes, 0, $imageBytes.Length)
$ms.Write($imageBytes, 0, $imageBytes.Length);
$bmp = [System.Drawing.Image]::FromStream($ms, $true)
# Image size after conversion
$canvasWidth = $canvasSize
$canvasHeight = $canvasSize
# Set picture quality
$myEncoder = [System.Drawing.Imaging.Encoder]::Quality
$encoderParams = New-Object System.Drawing.Imaging.EncoderParameters(1)
$encoderParams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter($myEncoder, $ImgQuality)
# Get image type
$myImageCodecInfo = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | Where-Object { $_.MimeType -eq 'image/jpeg' }
# Get aspect ration
$ratioX = $canvasWidth / $bmp.Width;
$ratioY = $canvasHeight / $bmp.Height;
$ratio = $ratioY
if ($ratioX -le $ratioY) {
$ratio = $ratioX
}
# Create an empty picture
$newWidth = [int] ($bmp.Width * $ratio)
$newHeight = [int] ($bmp.Height * $ratio)
$bmpResized = New-Object System.Drawing.Bitmap($newWidth, $newHeight)
$graph = [System.Drawing.Graphics]::FromImage($bmpResized)
$graph.Clear([System.Drawing.Color]::White)
$graph.DrawImage($bmp, 0, 0 , $newWidth, $newHeight)
# Create an empty stream
$ms = New-Object IO.MemoryStream
$bmpResized.Save($ms, $myImageCodecInfo, $($encoderParams))
# cleanup
$bmpResized.Dispose()
$bmp.Dispose()
return $ms.ToArray()
}
$ADUserInfo = ([ADSISearcher]"(&(objectCategory=User)(SAMAccountName=$env:username))").FindOne().Properties
$ADUserInfo_sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
If ($ADUserInfo.thumbnailphoto) {
$img_sizes = @(32, 40, 48, 96, 192, 200, 240, 448)
$img_base = "C:\Users\Public\AccountPictures"
$reg_key = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\$ADUserInfo_sid"
If ((Test-Path -Path $reg_key) -eq $false) { New-Item -Path $reg_key } { write-verbose "Reg key exist [$reg_key]" }
Try {
ForEach ($size in $img_sizes) {
$dir = $img_base + "\" + $ADUserInfo_sid
If ((Test-Path -Path $dir) -eq $false) { $(New-Item -ItemType directory -Path $dir).Attributes = "Hidden" }
$file_name = "Image$($size).jpg"
$path = $dir + "\" + $file_name
Write-Verbose " Crete file: [$file_name]"
try {
ResizeImage -imageSource $($ADUserInfo.thumbnailphoto) -canvasSize $size -ImgQuality 100 | Set-Content -Path $path -Encoding Byte -Force -ErrorAction Stop
Write-Verbose " File saved: [$file_name]"
}
catch {
If (Test-Path -Path $path) {
Write-Warning "File exist [$path]"
}
else {
Write-Warning "File not exist [$path]"
}
}
$name = "Image$size"
try {
$null = New-ItemProperty -Path $reg_key -Name $name -Value $path -Force -ErrorAction Stop
}
catch {
Write-Warning "Reg key edit error [$reg_key] [$name]"
}
}
}
Catch {
Write-Error "Check permissions to files or registry."
}
}
קובץ ה- Script מקבל את הערך של התכונה thumbnailphoto של המשתמש הנוכחי מ- Active Directory ושומר אותו בתיקיה המקומית
C:\Users\Public\AccountPictures\{User SID}. התיקיה תכיל קבצי JPG עם רזולוציות שונות עבור רכיבי ממשק שונים של Windows: image32.jpg (32×32), image40.jpg (40×40) וכו '.
כדי לאגד קבצי תמונות אלה לפרופיל משתמש, קובץ ה- Script ייצור מיפויים תחת מפתח הרישום HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\{User_SID}.
העתק את קוד הסקריפט של PowerShell ושמור אותו בקובץ PS1 חדש בבקר תחום בתיקייה NetLogon (
\\a-d.site\NETLOGON\SetADPicture.ps1)
חשוב. אם תשמור את סקריפט הכניסה ל-PS1 בספריית NETLOGON, אין צורך להגדיר בנפרד את אפשרויות מדיניות ביצוע קובצי ה-Script של PowerShell.
עליך להפעיל קובץ script זה של PowerShell כאשר המשתמש נכנס ל- Windows. הדרך הקלה ביותר ליישם זאת היא להשתמש בתכונת סקריפט הכניסה של GPO.
לשם כך, פתח את ה- GPO שנוצר בעבר ונווט אל תצורת משתמש -> מדיניות -> הגדרות Windows -> סקריפטים (כניסה/התנתקות);
בחר כניסה, עבור אל הכרטיסיה קבצי Script של PowerShell ולחץ על הוסף;
ציין את נתיב UNC המלא לקובץ ה-script SetADPicture.ps1 ב- NETLOGON.
עליך לצאת ולהיכנס (פעמיים) כדי להחיל את הגדרות GPO החדשות ולהגדיר את תמונת Active Directory שלך בפרופיל המשתמש שלך ב- Windows.
בדוק אם תמונת המשתמש מ- AD מוצגת כעת במסך הכניסה של Windows, בתפריט התחלה וברכיבי ממשק אחרים. לדוגמה, בדוק את תמונת המשתמש שלך בכרטיסיה חשבון בחלונית הגדרות (קיצור דרך URI הפקודה
ms-settings:accounts).
אם המדיניות לא פעלה:
אם Windows אינו מופעל, הוא לא יציג את האווטאר של המשתמש (בדוק את מצב ההפעלה של Windows במחשבי המשתמש);
בדוק את הגדרות GPO המתקבלות וודא שהמדיניות החל את תמונת הכניסה המוגדרת כברירת מחדל על כל המשתמשים (הגדרות מחשב-> מדיניות-> תבניות מנהליות-> לוח הבקרה-> חשבונות משתמשים) אינה מופעלת;
פתרון בעיות של מדיניות קבוצתית במחשבי יעד באמצעות הכלי gpresult.
באפשרותך להשתמש בקובץ script זה של PowerShell כדי לקבוע את תצורת תמונות המשתמש של Active Directory כתמונות כניסה לחשבון עבור כל מערכות ההפעלה הנתמכות: Windows 11, 10, 8.1 ו- Windows Server 2022, 2019, 2016, 2012 R2 (כולל תרחישים עם מארחי RDS עצמאיים וחוות של שירותי שולחן עבודה מרוחק).







