Използваме снимка от AD за потребителския профил на Windows 10

Outlook, SharePoint, Office365 и Skype for Business ви позволяват да използвате снимка на текущия влязъл в системата потребител от Active Directory (Azure AD) като аватари на потребители в техния интерфейс. В тази статия ще покажем как да използваме потребителската картина на Active Directory като картина на потребителския профил на Windows 10 с помощта на групови политики и PowerShell, която се появява на екрана за добре дошли, заключен екран, в стартовото меню и т.н..

Нашият скрипт ще работи по следния начин: когато потребител влезе в системата, трябва да се изпълни скрипт, който получава снимката на потребителя от атрибута thumbnailPhoto в Active Directory, запишете файла с изображения на диск и инсталирайте този файл като снимка на профила на потребителския профил на Windows. Решението трябва да работи еднакво на всички поддържани клиенти: Windows 10 (8.1 / 7) и на RDSH север с Windows Server 2016/2012 R2.

Съдържание:

  • Импортирайте потребителски снимки в Active Directory
  • Ние предоставяме на потребителите правото да променят иконата на профила
  • PowerShell скрипт, за да получите снимката на потребителя от AD и да инсталирате иконата на профила на Windows
  • Изпълнение на скрипт на PowerShell за обвързване на снимки към профил чрез GPO

Импортирайте потребителски снимки в Active Directory

На първо място, е необходимо потребителите на AD да задават снимки, като ги качват в специалния миниатюрен атрибутФото на акаунта. Можете да зададете снимки на потребители с помощта на програми на трети страни или с помощта на модула ActiveDirectory за Windows PowerShell (размерът на файла със снимката трябва да бъде не повече от 100 Kb и разделителна способност до 96 × 96 пиксела):

$ photo = [байт []] (Get-Content C: \ PS \ divanov_photo.jpg - Байт за кодиране)
Set-ADUser divanov -Сменете @ thumbnailPhoto = $ photo

За подробности относно използването на PowerShell за управление на снимки в AD вижте статията: Качете потребителска снимка в Active Directory.

Ние предоставяме на потребителите правото да променят иконата на профила

В Windows 10 информацията за картината на акаунта (пътят към картината, използвана за потребителския профил) се съхранява в клона на системния регистър HKLM\ СОФТУЕР\ Microsoft\ Windows\ CurrentVersion\ AccountPicture\ Потребители. За да могат потребителите без администраторски права да правят промени, трябва да им предоставите разрешения за запис в този ключ на системния регистър.

  1. Най-лесният начин е да разпространявате права на регистър чрез групови правила. За целта създайте нова политика и я свържете към ОУ с компютрите на потребителите;
  2. След това отидете на секцията Конфигурация на компютъра -> Политики -> Настройки на Windows -> Настройки за защита -> Регистър и създайте нов ключ на системния регистър (Добавяне на ключ) с пътя МАШИНА \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Потребители;
  3. След това раздела сигурност трябва да бъдат предоставени пълен контрол за всички потребители на домейна (група [DomainName] \ Потребители) и щракнете върху OK;
  4. В следващия диалогов прозорец изберете Заменете съществуващото разрешение за всички под ключове с наследствени разрешения, в противен случай потребителите няма да имат права на вложени клонове на регистъра;

PowerShell скрипт, за да получите снимката на потребителя от AD и да инсталирате иконата на профила на Windows

След това ни трябва PowerShell скрипт, който трябва да получи снимка на текущия потребител от Active Directory, да го запише в jpg файл и да го зададе като икона на потребителски профил. Има две опции за получаване на снимки от AD: използване на командлета Get-ADUser от модула ActiveDirectory (този модул трябва да бъде инсталиран на всички компютри чрез RSAT или просто да копирате необходимите RSAT-AD-PowerShell файлови модули, без да инсталирате RSAT). За да направим скрипта универсален и да работи правилно, включително в Windows 7, няма да използваме модула RSAT-AD-PowerShell, но ще имаме достъп до AD чрез класа ADSISearcher.

Пример за скриптове SetADPicture.к.с.1 За да получите снимка на потребителя от AD и да го зададете като аватар на вашия акаунт в Windows, вижте по-долу:

[CmdletBinding (SupportsShouldProcess = $ true)] Param ()
функция Test-Null ($ InputObject) return! ([bool] $ InputObject)
$ ADuser = ([ADSISearcher] "(& (objectCategory = Потребител) (SAMAccountName = $ env: потребителско име))"). FindOne (). Свойства
$ ADuser_photo = $ ADuser.thumbnailphoto
$ ADuser_sid = [System.Security.Principal.WindowsIdentity] :: GetCurrent (). User.Value
Ако ((Test-Null $ ADuser_photo) -eq $ false)
$ img_size = @ (32, 40, 48, 96, 192, 200, 240, 448)
$ img_mask = "Изображение 0 .jpg"
$ img_base = "C: \ Потребители \ Публични \ АкаунтиПриложения"
$ reg_base = "HKLM: \ СОФТУЕР \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Потребители \ 0"
$ reg_key = [string] :: формат ($ reg_base, $ ADuser_sid)
$ reg_value_mask = "Изображение 0"
Ако ((Test-Path -Path $ reg_key) -eq $ false) New-Item -Path $ reg_key
Опитайте
ForEach ($ размер в $ img_size)
$ dir = $ img_base + "\" + $ ADuser_sid
Ако ((Test-Path -Path $ dir) -eq $ false) $ (mkdir $ dir) .Attributes = "Скрит"
$ file_name = ([string] :: формат ($ img_mask, $ size))
$ path = $ dir + "\" + $ file_name
Напишете-многословно "спестяване: $ file_name"
$ ADuser_photo | Set-Content -Path $ path -Encoding Byte -Force
$ name = [string] :: формат ($ reg_value_mask, $ size)
$ value = New-ItemProperty -Path $ reg_key -Name $ name -Value $ path -Force


Улов
Грешка при писане „Проверете разрешенията за файлове или регистър.“

Скриптът получава стойността на атрибута thumbnailphoto на текущия потребител от Active Directory AD и запазва снимката в директорията C: \ Users \ Public \ AccountPictures \ User SID. Каталогът ще съдържа графични файлове с различна разделителна способност (от 32 × 32 до 448 × 448 пиксела) за различни формати на интерфейсните елементи на Windows 10: image32.jpg, image40.jpg и т.н..

Обвързването на снимките към потребителския профил се извършва в клона на системния регистър HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Потребители \ User SID.

Изпълнение на скрипт на PowerShell за обвързване на снимки към профил чрез GPO

Сега се нуждаем от скрипта SetADPicture.ps1, който да стартираме, когато потребителят влезе в Windows. Най-лесният начин е да внедрите тази група от политики чрез скрипт за влизане..

За да направите това, в предварително създадената политика в раздела потребител Конфигурация -> Политики -> Windows Настройки -> Сценарии (Logon/ Излизане), създайте нов скрипт за влизане, който изпълнява вашия PowerShell скрипт:

Изпълним файл: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

Параметри на скрипта: -Неинтерактивен -ExecutionPolicy Bypass -Noprofile -File% logonserver% \ netlogon \ script \ SetADPicture.ps1

Важно е. Скриптът SetADPicture.ps1 трябва да бъде предварително копиран в директорията netlogon \ script \ на контролера на домейна.

Остава да присвоите политиката на необходимата OU с компютри, да изпълните логване и влизане от потребителя.

В настройките на правилата активирайте режима за обработка на връщане към GPO (Конфигурация на компютъра -> Административни шаблони -> Система -> Групова политика -> Конфигурирайте режима на групови правила за връщане към обратна връзка = Сливане). В този режим можете да приложите правилата към OU с потребители.

За да диагностицирате използването на GPO на целевите компютри, използвайте помощната програма gpresult и статията „Защо GPO не се използва?“.

След това на потребителя на Windows 10 ще бъде назначен аватар от AD и той ще започне правилно да се показва като снимка на потребителския акаунт в менюто "Старт", на екрана за влизане и други прозорци. Инструкции за присвояване на снимка на профила добре и тествани на Windows 10 LTSC (1809).