добавление фотографий в Active Directory

Автор: | 08.09.2016

Захотелось мне чтобы в MS Outlook/Lync отображалось фото в контакте. Процедура добавления фото имеет 3 варианта.

Необходимо в атрибут thumbnailPhoto записать фотографию. Размер фотографии 96х96 пикселей. Размер не более 10 кбайт. Файл формата JPG.

Предварительная подготовка (для Windows Sever 2012R2 не тредуется)

Необходимо, чтобы этот атрибут реплицировался в глобальный каталог. Чтобы это проверить, необходимо запустить оснастку «Active Directory Schema».

run->mmc->Active Directory Schema

если такой остнастки у вас нету, требуется выполнить:

regsvr32 schmmgmt.dll
Далее идем в Attributes и ищем атрибут thumbnailPhoto, и ставим галочку «Replicate this attribute to the Global Catalog»

Итак, подготовительные работы завершены.

Вариант 1

В новых версиях MS Exchange 2013/2016 в OWA пользователь сам может добавить фотографию в свою учетную запись. После чего она будет отображаться в Глобальной Адресной Книге (GAL)

Открываем OWA->верхний правый угол (жмем на имя учетной записи)->после под аватаром нажимаем изменить (пример сделан на MS Exchange 201, c 2013 различие минимальное!):

У вас откроется окно с предпологаемой фотографией и «значком в виде папки» (для Exchange 2013) или «Отправить фотографию» (для Exchange 2016) , жмем!

После чего вы сможете загрузить фото со своего локального компьютера.

Добавление фото завершено 🙂

Вариант 2

Иногда (чаще всего), добавить фото проще самому, с помощью PowerShell, если у вас 1-2 фото то можно использовать данный скрипт (выполняется на сервере AD):

Import-Module ActiveDirectory
$path="C:\photo\a.kuvshinov.jpg"
$photo=[byte[]](Get-Content $path -Encoding byte)
Set-ADUser a.kuvshinov -Replace @{thumbnailPhoto=$photo}

Где:

$path= это путь до папки с фотографией

Set-ADUser учетная запись пользователя, которому мы добавляем фото.

Запускаем скрипт, и радуемся!

Вариант 3

Бывает так, что фотографий нужно добавить много, и вариант 2 будет очень долгим и нудным, поэтому был написан следующий скрипт (выполняется на сервере Exchange):

param([Switch]$all, [String]$UserName)
#Default Values. Change them based on your environment.
$DefaultPhotoPath = 'C:\Photo'
Function CheckPhoto(){
Write-Warning "Validating file(s).."
Write-Host "File exists... " -nonewline
If (Test-Path $PhotoPath)
{
Write-Host "[OK]" -ForeGroundColor Green
Write-host "Photo size... " -nonewline
$PhotoSize = Get-ChildItem $PhotoPath | select Length
If ($PhotoSize.Length -le 10000) { Write-Host "[OK]" -ForeGroundColor Green } Else { Write-Host "[Fail]" -ForeGroundColor Red; exit }
}
Else
{
Write-Host "[Fail]" -ForeGroundColor Red
Exit
}
}
Function UploadAll(){
ForEach ($TempFile in Get-ChildItem $DefaultPhotoPath | Where-Object { $_.Extension -eq ".jpg" } )
{
$TempUserName = $TempFile.Name.substring(0, $TempFile.Name.Length - 4)
Write-Host $TempUserName -ForeGroundColor Yellow -NoNewLine
Import-RecipientDataProperty -Identity $TempUserName -Picture -FileData ([Byte[]]$(Get-Content -path $TempFile.Fullname -Encoding Byte -ReadCount 0))
Write-Host "[Done]" -ForeGroundColor Green
}
}
If ( $all -eq $true)
{
Write-Warning " ## This action will upload all pictures of C:\Photos to the AD users."
Write-Warning " ## All pictures must have the same name of the usernames"
Write-Warning "Are you sure that you want upload all pictures to the users (Y/N)?"
$Opt = Read-Host
If ( $Opt -eq 'y' ) { UploadAll; } Else { Write-Host "No changes were made."; Exit }
}
Else
{
$PhotoPath = $DefaultPhotoPath + $UserName + '.jpg'
CheckPhoto;
If ( $AbortMission -eq '$true' ) { Write-Error "Please, review the errors and try again." } Else { Import-RecipientDataProperty -Identity $UserName -Picture -FileData ([Byte[]]$(Get-Content -path $PhotoPath -Encoding Byte -ReadCount 0)) }
}

Где $DefaultPhotoPath = ‘C:\Photo’ = путь к папки с фотографиями

Все файлы фото, должны быть названы в формате учетных записей AD!

Запускаем скрипт, и радуемся жизни!

Есть еще разные варианта с установкой доп.софта который позволяет добавлять\просматривать фото прямо из остнастки User and Computers, но я никогда не ставлю сторонний софт на DC, а тем более который будет взаимодействовать с «Лесом».

добавление фотографий в Active Directory: 1 комментарий

  1. Иван

    Скрипт не работает. Вижу как минимум одну ошибку в строчке
    $PhotoPath = $DefaultPhotoPaty + $UserName + ‘.jpg’
    DefaultPhotoPaty вместо DefaultPhotoPath

Добавить комментарий

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