Pull to refresh

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

На протяжении всего времени использования Outlook 2010 замечал пустые окошки, где должны находиться фотографии пользователей, и в свободную минутку появилось желание дополнить данные о сотрудниках.

Поиск вывел: раз, два, три.
У меня есть ограничение в 10кб и разрешение не более 96 на 96 точек, bmp или jpg. В Active Directory есть атрибут Picture (ldapDisplayName: thumbnailPhoto), его и будем использовать в скрипте.
$folder = "C:\photos\"
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$root = $domain.GetDirectoryEntry()
$search = [System.DirectoryServices.DirectorySearcher
]$root
$search.Filter = "(&(objectCategory=Person)(objectClass=User))"
$search.FindAll() | foreach {
$user = [adsi<]$_.path
$accountName = $user.psbase.Properties["samaccountname"]
$jpgfile = "$folder$accountName.jpg"
if(!(test-path $jpgfile)){
write-host "User $($accountName) – image not found."
} else {
[byte[]]$jpg = Get-Content $jpgfile -encoding byte
$user.put("thumbnailPhoto", $jpg)
$user.setinfo()
Write-Host "User $($accountName) – updated."
}
}


Для поиска всех учетных записей применил фильтр:

$search.Filter = «(&(objectCategory=Person)(objectClass=User))»

В переменной $folder задается директория, с фотографиями в формате
логин_пользователя.jpg (можно использовать bmp, перед этим подправив скрипт).

После использования скрипта фотографии стали доступны как в GAL, так и в Lync'e, что очень приятно.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.