我一直在使用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 .....” 但仍然与我从其他用户那里得到的那个相似
只是想知道,将图像更新到活动目录的正确方法是什么
由于
答案 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
脚本解释自己我希望这对你有用。