Используем фото из AD для профиля пользователя Windows 10

Используем фото из AD для профиля пользователя Windows 10

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

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

Импорт фотографий пользователей в Active Directory

В первую очередь нужно для пользователей AD установить фотографии, загрузив их в специальный атрибут thumbnailPhoto учетной записи. Вы можете установить фото пользователям с помощью сторонних программ, или с помощью модуля ActiveDirectory для Windows PowerShell (размер файла с фотографией должен быть не более 100 Кб и разрешением до 96×96 пикселей):

$photo = [byte[]](Get-Content C:\PS\divanov_photo.jpg -Encoding byte)Set-ADUser divanov -Replace @

Предоставляем пользователям права на смену иконки профиля

В Windows 10 информация об картинке аккаунта (путь к картинке, использующейся для профиля пользователя) хранится в системной ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users. Чтобы пользователи без прав администратора могли внести изменения, нужно предоставить им права на запись в этот раздел реестра.

  1. Проще всего раздать права на реестр через групповые политики. Для этого создайте новую политику и привяжите ее к OU с компьютерами пользователей;
  2. Затем перейдите в раздел Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Registry и создайте новый ключ реестра (Add key) с путем MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users;
  3. Затем на вкладке Security нужно предоставить право FullControl для всех пользователей домена (группа [DomainName]\Users) и нажмите ОК;

PowerShell скрипт получения фото пользователя из AD и установки иконки профиля Windows

Далее нам понадобится PowerShell скрипт, который должен получить фото текущего пользователя из Active Directory, сохранить его в jpg файл и установить его в качестве иконки профиля пользователя. Есть два варианта получения фото из AD: с помощью командлета Get-ADUser из модуля ActiveDirectory (этот модуль должен быть установлен на всех компьютерах через RSAT, или достаточно скопировать необходимые файлы модуля RSAT-AD-PowerShell без установки RSAT). Чтобы скрипт был универсальным и корректно работал в том числе на Windows 7, мы не будем использовать модуль RSAT-AD-PowerShell, а обратимся к AD через класс ADSISearcher.

Пример скрипта 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.ValueIf ((Test-Null $ADuser_photo) -eq $false) Try >Catch >

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

Привязка фотографий к профилю пользователя осуществляется в ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\.

Запуск PowerShell скрипта для привязки фото к профилю через GPO

Теперь нам нужно, чтобы скрипт SetADPicture.ps1 запускаться при входе пользователя в Windows. Проще всего это реализовать через логон скрипт группой политики.

Для этого в ранее созданной ранее политики в разделе User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff), создайте новый Logon скрипт, запускающий ваш PowerShell скрипт:

Исполняемый файл: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe

Параметры скрипта, разрешающие запуск PS1 файлов независимо от текущих настроек PowerShell Execution Policy: -Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

Осталось назначить политику на нужные OU с компьютерами, выполнить logoff и logon пользователя.

Для диагностики применения GPO на целевых компьютерах используйте утилиту gpresult и статью “Почему не применяется GPO?”.

После этого пользователю Windows 10 будет назначена аватарка из AD, и она начнет корректно отображаться в качестве рисунка учетной записи пользователя в стартовом меню, на экране входа в систему и других окнах. Инструкция по назначению фотографии профиля работает нормально и протестирована в Windows 10 LTSC (1809).

📎📎📎📎📎📎📎📎📎📎