Загрузка фото пользователям Active Directory, атрибут thumbnailPhoto

В атрибутах пользователей Active Directory можно хранить фотографии. Эти фотографии можно показывать в качестве аватарки пользователя в таких приложениях как Outlook, OWA, Word, Excel, Lync/Skype for Business, Teams, SharePoint (и ряде другие). Также фото из AD можно показывать в качестве аватары пользователя Windows.

Фото пользователя в двоичном виде хранится в атрибуте thumbnailPhoto . Администратор может загрузить JPEG файл с фото пользователя в этот атрибут AD с помощью PowerShell, оснастки ADUC со специальным расширением или с помощью сторонних утилит. Большинство приложений берут фото пользователя из атрибута thumbnailPhoto. Для хранения фотографий больших размером используется другой атрибут — jpegPhoto (не будем использовать его в рамках этой статьи).

Максимальный размер фото пользователя в атрибуте thumbnailPhoto не должен превышать 100 Кб. Однако рекомендуется в качестве фото использовать графический JPEG/BMP файл размером до 10 Кб и расширением 96×96 пикселей. Использование фото пользователей большого размера может существенно увеличить размер файла база данных AD (NTDS.DIT) и трафик репликации между контроллерами домена. Необходимая схема AD – 2008 или выше.

Как добавить фотографию пользователя AD с помощью PowerShell?

Для загрузки фотографии пользователя в AD используется командлет Set-ADUser из модуля Active Directory for Windows PowerShell (входит в состав средств администрирования RSAT). Сначала нужно преобразовать графический файл (формат JPG, BMP или PNG) в двоичный вид (массив байтов):

$photo = [byte[]](Get-Content C:\PS\admin_photo.jpg -Encoding byte)
Теперь можно загрузить фото пользователю AD:

Set-ADUser vvkuzmin -Replace @{thumbnailPhoto=$photo}

То же самое одной строкой:

Set-ADUser vvkuzmin -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\ps\admin_photo.jpg" -Encoding byte))}

Атрибут Active Directory thumbnailPhoto фотография пользователя

После выполнения репликации (и обновления GAL, в случае использования Exchnage), фото пользователя из Active Directory будет отображаться в Outlook, Lync, OWA и др.

В некоторых приложения нужно отдельно включить отображение фото пользователей. Например, в настройках Outlook для отображения фото контактов должна быть включена опция Show user photographs when available (Options -> People).

Показать фотографии контактов пользователей в Outlook

Откройте свойства пользователя в консоли Active Directory Users and Computers (ADUC), перейти на вкладку редактора атрибутов и убедиться, что в атрибуте thumbnailPhoto теперь содержится значение.

просмотр бинарного значения атрибута thumbnailPhoto в консоли Active Directory

По умолчанию загрузить фото в Active Directory может сам пользователь или администраторы. Вы можете предоставить права на обновление фото в AD другим пользователям или группам с помощью мастера делегирования полномочий AD (нужно предоставить право Write thumbnailPhoto ).

Если вам нужно массово импортировать фото сразу множеству пользователей AD, подготовьте CSV файл со списком учетных записей и путей к JPG файлам в следующем формате:

AD_username, Photo
avivanov, C:\PS\avivanov.jpg
[email protected], C:\PS\jsmith.jpg
pppetrov, C:\PS\pppetrov.png

Следующая однострочная PowerShell команда загрузит список пользователей из CSV файла и обновит их фотографии в Active Directory:

Import-Csv C:\PS\import.csv |%{Set-ADUser -Identity $_.AD_username -Replace @{thumbnailPhoto=([byte[]](Get-Content $_.Photo -Encoding byte))}}

Чтобы найти пользователей в AD, у которых не загружено фото, выполните:

Get-ADUser -Filter * -properties thumbnailPhoto | ? {(-not($_.thumbnailPhoto))} | select Name

Если нужно сохранить фото пользователя из AD и экспортировать его в графический JPG файл, сначала выберите учетную запись с помощью Get-ADUser:

$ADuser = Get-ADUser vvkuzmin -Properties thumbnailPhoto

Теперь нужно сохранить значение атрибута thumbnailPhoto в JPG файл:

$ADuser.thumbnailPhoto | Set-Content vvkuzmin.jpg -Encoding byte

Загрузить фото пользователю Active Directory через Exchange

В Exchange Server 2019, 2016, 2013 для загрузки фото пользователю AD можно использовать командлет Set-UserPhoto. При использовании в скриптах сначала нужно загрузить модуль Exchange Management Shell.

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
Set-UserPhoto -Identity vvkuzmin -PictureData ([System.IO.File])::ReadAllBytes("C:\ps\user_photo.jpg") -Confirm:$False

Для очистки фотографии используется команда:

Remove-UserPhoto -Identity vvkuzmin

В Exchange 2010 для загрузки фото нужно использовать команду Import-RecipientDataProperty:

Import-RecipientDataProperty -Identity “vvkuzmin” -Picture -FileData ([Byte[]] $(Get-Content -Path "C:\PS\user_photo.jpg" -Encoding Byte -ReadCount 0))

В Exchange Online (Microsoft 365) для загрузки фото в AD вместо Set-UserPhoto нужно использовать новый командлет Microsoft Graph:

Set-MgUserPhotoContent -UserId <userId> -Infile "C:\ps\[email protected]"

Также пользователи могут самостоятельно изменить свою аватарку через Outlook Web Access. Откройте свой ящик через OWA, щелкните по учетной записи в правом верхнем углу, выберите Edit information -> photo -> нажмите кнопку change и укажите путь к jpeg файлу с фотографией.

outlook web access загрузка фото пользователя Active Directory через Exchange

Добавить кнопку загрузки фото пользователя в консоль Active Directory

Те, кто не дружит с PowerShell, могут использовать сторонние графические утилиты для загрузки фото в AD. Наиболее популярны такие условно бесплатные утилиты, как СodeTwo Active Directory Photos или AD Photo Edit. Хотя, многие администраторы остерегаются использовать стороннее ПО для внесения изменений в AD.

Я предпочитаю использовать небольшую библиотеку AdExt.dll, которая добавляет отдельную вкладку для добавления фотографии прямо в консоль ADUC. Скачать библиотеку AdExt.dll можно с нашего сайта— AdExt-dll.zip

Чтобы зарегистрировать библиотеку, откройте командную строку с правами администратора и перейдите в каталог .Net Framework:

  • Для x86 Windows : cd %WinDir%\Microsoft.NET\Framework\v2.0.50727
  • Для x64 Windows: cd %WinDir%\Microsoft.NET\Framework64\v4.0.30319
Пути могут отличаться в зависимости от установленных версий .Net Framework.

Установите библиотеку командой:

InstallUtil.exe c:\ps\ad\AdExt.dll

установка библиотеки AdExt.dll для управления фото сотрудников

Перезапустите консоль ADUC и откройте свойства любого пользователя. В консоли должна появится новая вкладка Photo, на которой вы можете добавить или удалить фото пользователя.

Обратите внимание, что, если вы открыли свойства пользователя через поиск в AD, эта вкладка не будет доступна. Нужно выбрать и открыть свойства пользователя непосредственно в OU, в котором он находится.

добавить кнопку загрузки фото пользователя в консоли ADUC

Чтобы удалить (разрегистрировать) библиотеку AdExt.dll, выполните команду:

InstallUtil.exe /u c:\ps\ad\AdExt.dll

Библиотека AdExt.dll предоставляет два способа загрузки фото:

  • Секция thumbnail – фото автоматически уменьшается до разрешений 96×96 с максимальным размером 10 Кб
  • jpegPhoto – позволяет загрузить фото хорошего качества в атрибут jpegPhoto (используется редко).

Предыдущая статья Следующая статья


Комментариев: 26 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)