Вопросы по добавлению изображения в атрибут thumbnailphoto из Active Directory - PullRequest
0 голосов
/ 21 мая 2018

Я использую adldap для добавления изображения пользователя в атрибут thumbnailphoto для обновления информации о профиле пользователя через активную директорию.

Вот что я сделал следующим образом:

Я использую код:

$ updated = $ adldap-> user () -> modify ($ account,$ attribute);

, чтобы обновить учетную запись пользователя определенными атрибутами (например, thumbnailphoto)

, однако, когда я добавляю информацию в $ attribute.Я преобразую URL-адрес изображения в строку base64 (например, "/ 9j / 4AAQSkZJRgABAQEBLAEsAAD / 2wBDAAMCAg .......") , а затем декодирую эту строку и обновляю до атрибутов $.несмотря на то, что атрибут thumbnailphoto имеет значение, но он не может отображать реальное изображение (я проверил с именем программного обеспечения "AD photo edit free edition")

декодированное значение, которое я получил следующим образом: "\ u00c3\ u0083 \ u00bf \ u00c3 \ u0083 \ u00c2 \ u00c3 \ u0083 \ u0 ...... "

, который я сравнил с другим атрибутом thumbnailphoto другого активного каталога пользователя, отображением их изображенияотлично.

их значение атрибута thumbnailphoto выглядит следующим образом:

"\ u00ff \ u00d8 \ u00ff \ u00e0 \ u0000 \ u0010JFIF \ u0000 \ u0001 \ u0001 \ u0001 ...... "

Я думаю, что это шестнадцатеричное значение, и я пытаюсь преобразовать свое исходное значение кодирования (" / 9j / 4AAQSkZJRgABAQEBLAEsAAD / 2wBDAAMCAg ....... ") ) в hex и обновите атрибут thumbnailphoto и получите

"\ ffd8ffe0 .....", но все равно не похож на тот, который я получил от других пользователей

Просто интересно, как правильно обновить изображение в активный каталог

Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

Я использую Windows PowerShell для этого,

Мой код:

# Set the network path of the user pictures.
$NetworkPath = "Path were the photos are stored"
# Get all the filesnames without the extension, every picture inside this folder should be named after the username of the user.
$UsersNames = Get-ChildItem -Path "$NetworkPath"| % {$_.BaseName}
# For each file name (username) go and convert into digital (byte encoding) the file then store it in a temporary value ($Photo).
# Then update the users jpegPhoto attribute on Active Directory with the $photo
foreach ($User in $UsersNames){
$Photo = [Byte[]](Get-Content "$NetworkPath\$User.jpg" -Encoding Byte)
Set-ADUser $User -Replace @{jpegPhoto=$Photo}
}

Get-ChildItem 'C:\Setup\Test\*.jpg' | Set-ImageSize -Destination 'C:\Setup\Test\new\' -WidthPx 96 -HeightPx 96 -Verbose

Мне пришлось загрузить Set-ImageSize, чтобы я мог изменить размеры изображений.https://gallery.technet.microsoft.com/scriptcenter/Resize-Image-File-f6dd4a56

Сценарий объясняет себя, я надеюсь, что это информативно для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...