如何从 Active Directory 服务器下载头像图像?

如何从 Active Directory 服务器下载头像图像?

我使用的是与 Oracle 客户端一起安装的 ldapsearch.exe 二进制文件。花了一段时间才找出它想要的参数,但我能够成功连接到 AD 并解析出文本属性(给定用户名、查找电子邮件等)。但我还想获取 Exchange/Lync 使用的头像图像。根据我找到的一些 Microsoft 文档,属性名称是缩略图照片。我一开始无法弄清楚,但是这个命令不会产生令人不悦的错误消息:

ldapsearch -v -h xxx.yyy.edu -Z -b cn=USERNAME,ou=Computers,ou=yyy,dc=yyy,dc=edu cn=USERNAME thumbnailPhoto

当我运行该程序时,我得到以下输出:

ldap_open( xxx.yyy.edu, 389 )
filter pattern: cn=USERNAME
returning: thumbnailPhoto
filter is (cn=USERNAME)
CN=USERNAME,OU=Computers,OU=yyy,DC=yyy,DC=edu
1 matches

当前目录中没有文件,%TEMP% 中也没有文件。如果我使用 -t 并带或不带参数,则不会下载任何文件。控制台窗口不会填充任何二进制垃圾。无论我从 bash (msys) 还是 cmd.exe 运行命令,我都会得到相同的行为。

怎么回事?看起来我做的一切都是正确的。但我没有办法调试。我甚至没有使用正确的工具吗?

答案1

如果您可以使用 powershell 而不是 ldapsearch,那么尝试以下操作:

$user = Get-ADUser John -Properties thumbnailPhoto
$user.thumbnailPhoto | Set-Content c:\temp\1.jpg -Encoding byte

答案2

当我进行搜索时,我得到了一个编码为 jpeg 的 base64 字符串。通过管道将其发送base64 -d到获取图像。我将其发送给feh查看缩略图的权限,但您可以> ${SEARCH_MAIL}thumbnail.jpeg将其保存。

[email protected]
[email protected]
host=ldap://sub.domain.net
dc="DC=sub,DC=domain,DC=net" 
query="(&(objectClass=user)(mail=$SEARCH_MAIL))"


ldapsearch  -v -x -H $host -v "$dc" "$query" -D "$user" -w "$pass" thumbnailPhoto |&
  sed -n '/thumbnailPhoto:: /,/^$/p'| # extract only the thumbnailPhoto
  sed 's/thumbnailPhoto::\|\s//g'   | # remove header and leading spaces
base64 -d                           | # decode
feh -                                 # view, use '> file.jpg' to save

相关内容