Качване на снимка на потребителя в Active Directory с помощта на PowerShell

Сред потребителските атрибути, започвайки от версията на схемата Active Directory в Windows Server 2000, има специален атрибут thumbnailPhoto, където можете да съхранявате снимката на потребителя (или всякакви други снимки 🙂) като двоични данни. Outlook, започващ с Lync 2010, SharePoint (и други приложения) могат да използват данните, съхранени в този атрибут за показване на снимката на потребителя в техния интерфейс. В допълнение, тези снимки могат да се използват като аватар на потребителите на Windows..

Нека разгледаме няколко прости сценария за качване на потребителски снимки в AD и експортиране на данни от домейн в файлове с изображения.

Основни характеристики и ограничения на използването на потребителски снимки в AD:

  • Максималният размер на стойността на атрибута thumbnailPhoto на потребителя, в който се съхранява изтеглената снимка, е 100 Kb. Въпреки това, има обща препоръка да използвате файл с изображение с размер AD като снимка на потребителя в AD до 10 Kb и размер 96 × 96 пиксела
  • за показване на снимки в Outlook 2010 и по-нови версии е необходима поне версия на схемата AD 2008
  • При голям брой потребителски снимки в AD могат да възникнат проблеми с репликацията поради растежа на базата данни NTDS.DIT
  • Потребителите имат права да променят собствената си снимка в AD. Ако трябва да делегирате възможността да качвате снимки на други потребители (например HR отдела), трябва да предоставите правото „Напишете миниатюратаФото“ на желания OU в AD

Съдържание:

  • Инсталиране на снимка на потребителя в AD с помощта на PowerShell
  • Качете потребителска снимка на AD чрез Exchange Shell
  • Партидно импортиране на изображение в AD
  • Качете потребителски снимки от Active Directory във файл

Инсталиране на снимка на потребителя в AD с помощта на PowerShell

За да заредите снимка на потребителя в Active Directory с помощта на PowerShell, трябва да заредите модула активен указател модул за Windows Powershell и използвайте командлета Set-ADUser, за да актуализирате атрибута thumbnailPhoto, като заредите съдържанието на файла с изображение като негова стойност.

Импорт-модул ActiveDirectory
$ photo = [байт []] (Get-Content C: \ PS \ admin_photo.jpg -Банк за кодиране)
Set-ADUser vvkuzmin -Replace @ thumbnailPhoto = $ photo

Същото нещо в един ред:

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

След изпълнение на тези команди снимката на клиента, съхранявана в Active Directory, ще бъде показана в клиентите на Outlook, Lync, OWA и др. (Може да отнеме известно време, за да завършите репликацията и да актуализирате GAL).

Качете потребителска снимка на AD чрез Exchange Shell

Подобна функционалност за качване на потребителски снимки в AD се поддържа чрез конзолата за управление на Exchange. За тези цели можете да използвате командлета Внос-RecipientDataProperty.

забележка. Командлерът Import-RecipientDataProperty в Exchange 2010 не може да зареди изображение, по-голямо от 10 KB.

Командата за актуализиране на снимката на vvkuzmin ще изглежда така:

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

Партидно импортиране на изображение в AD

За пакетно импортиране на изображения за много потребители на Active Directory наведнъж се нуждаем от CSV файл, който ще съдържа списък с акаунти и съответните файлове със снимки. Форматът на файла import.csv може да бъде такъв:

AD_username, Снимка
avivanov, C: \ PS \ avivanov.jpg
[email protected], C: \ PS \ jsmith.jpg
pppetrov, C: \ PS \ pppetrov.png

Следващата команда ще зареди списъка с потребители от CSV файла и ще актуализира снимките им в AD:

Import-Csv C: \ PS \ import.csv |% Set-ADUser -Identity $ _. AD_username -Заменете @ thumbnailPhoto = ([байт []] (Get-Content $ _. Photo -Encoding byte))

Качете потребителски снимки от Active Directory във файл

Потребителската снимка от AD може да бъде записана в графичен файл. За да направите това, изберете желания потребител с Get-ADUser:

$ ADuser = Get-ADUser vvkuzmin -Properties thumbnailPhoto

И запазете съдържанието на своя атрибут thumbnailPhoto във jpg файл:

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

Използвайте следния скрипт, качете снимката всички потребители от конкретен контейнер (OU) до файл:

Импорт-модул ActiveDirectory
$ ADusers = Get-ADUser -Filter * -SearchBase "OU = Потребители, OU = Ufa, DC = winitpro, DC = bg" - thumbnail Снимки | ? $ _. thumbnailPhoto
foreach ($ ADuser в $ ADusers)
$ name = $ ADuser.SamAccountName + ".jpg"
$ ADuser.thumbnailPhoto | Set-Content $ name-байт за кодиране

И накрая, няколко полезни запитвания. Първият ви позволява да изберете всички потребители, които имат набор от снимки в атрибута AD thumbnailPhoto

Get-ADUser -Filter * -properties thumbnailPhoto | ? $ _. thumbnailФото | изберете Име

Втората заявка ви позволява да изберете потребители без снимка:

Get-ADUser -Filter * -properties thumbnailPhoto | ? (-not ($ _. thumbnailPhoto)) | изберете Име

Има голям брой помощни програми на трети страни, които позволяват на графичните редактори да задават снимки на потребителите на AD в по-удобна форма. Но като правило тяхната функционалност е излишна, а рисковете от използването на трети софтуер за редактиране на AD са доста значителни. Освен това, всички промени могат лесно да бъдат направени чрез PowerShell.