有关从Active Directory向thumbnailphoto属性添加图像的问题

时间:2018-05-21 19:40:20

标签: sharepoint active-directory

我一直在使用adldap将用户图片添加到thumbnailphoto属性,以通过主动广告更新用户个人资料信息。

以下是我的所作所为:

我使用代码:

$ modified = $ adldap-> user() - > modify($ account,$ attributes);

更新具有特定属性的用户帐户(例如thumbnailphoto)

但是,当我向$ attribute添加信息时。 我将图片网址转换为base64字符串(例如“/ 9j / 4AAQSkZJRgABAQEBLAEsAAD / 2wBDAAMCAg .......”) 然后解码这些字符串并更新到$ attributes。即使thumbnailphoto属性有值,但它无法显示真实图像(我用软件名称“AD照片编辑免费版”检查)

我得到的解码值如下: 的 “\ u00c3 \ u0083 \ u00c2 \ u00bf \ u00c3 \ u0083 \ u00c2 \ u0098 \ u00c3 \ u0083 \ U0 ......”

我与其他用户活动目录thumbnailphoto属性进行了比较,他们的图像显示效果非常好。

他们的thumbnailphoto属性值如下:

“\ u00ff \ u00d8 \ u00ff \ u00e0 \ u0000的\ u0010JFIF \ u0000的\ U0001 \ U0001 \ U0001 ......”

我认为这些是十六进制值,我尝试将原始编码值(“/ 9j / 4AAQSkZJRgABAQEBLAEsAAD / 2wBDAAMCAg .......”)转换为十六进制并更新到thumbnailphoto属性,结果是

“\ ffd8ffe0 .....” 但仍然与我从其他用户那里得到的那个相似

只是想知道,将图像更新到活动目录的正确方法是什么

由于

1 个答案:

答案 0 :(得分:0)

我正在使用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

脚本解释自己我希望这对你有用。