当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片

作者:精品下载站 日期:2024-12-14 20:13:51 浏览:14 分类:玩电脑

使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片


Active Directory 用户帐户具有特殊的 thumbnailPhoto 属性,其中用户的照片可以存储为二进制数据。 Outlook、OWA、Lync/Skype for Business、SharePoint(和其他应用程序)可以使用此 AD 属性中存储的照片作为用户界面中的头像。此外,这些照片可以用作Windows用户帐户图片。

在本文中,我们将向您展示如何使用 PowerShell、OWA 或 Active Directory 用户和计算机管理单元将用户的照片添加(上传)到 Active Directory,以及如何将thumbnailPhoto 属性值保存(导出)到 jpeg 文件。

Active Directory 中的 ThumbnailPhoto 属性

AD中使用用户照片的主要方面和限制:

  • 用户对象的thumbnailPhoto 属性中的最大照片大小为100 KB。不过,一般建议使用 10 KB96×96 像素大小的图形 JPEG/BMP 文件格式作为 AD 中的用户照片;

  • 要在 Outlook 2010 或更高版本中显示照片,至少需要 Windows Server 2008 Active Directory 架构版本;

  • 如果Active Directory中存在大量用户照片,则域控制器之间的复制流量会因NTDS.DIT文件(AD数据库)的增长而增加;

  • 用户可以在AD中更改自己的照片。如果您需要将上传照片的能力委托给其他用户(例如人力资源部门),则需要使用 AD 委托向导向该组授予具有用户帐户的 OU 的“写入缩略图照片”权限。

如何使用 PowerShell 在 AD 中添加/更新用户照片?

要使用 PowerShell 将用户照片添加(上传)到 Active Directory,您需要使用Windows PowerShell 的 Active Directory 模块(它是 RSAT 管理工具的一部分)。首先,您需要将图像文件转换为字节数组,然后使用Set-ADUser cmdlet 将其设置为thumbnailPhoto 属性的值。

Import-Module ActiveDirectory
$photo = [byte[]](Get-Content C:\PS\jkuznetsov_photo.jpg -Encoding byte)
Set-ADUser jkuznetsov -Replace @{thumbnailPhoto=$photo}

PowerShell 中的一行代码也是同样的事情:

Set-ADUser jkuznetsov -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\ps\jkuznetsov_photo.jpg" -Encoding byte))}

[玩转系统] 使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片

执行这些命令后,存储在 Active Directory 数据库中的用户照片将显示在 Outlook、Lync/Skype、OWA 等中(AD 复制和 GAL 更新结束可能需要一些时间)。

您可以在 Active Directory 用户和计算机 (ADUC) 控制台中打开用户的属性,转到“属性编辑器”选项卡,并确保缩略图属性现在包含一个值。

[玩转系统] 使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片

Exchange 和 Outlook Web Access 中的用户照片管理

Exchange Management Shell 支持导入 AD 用户照片的相同功能。为此,您可以使用 Import-RecipientDataProperty cmdlet。

注意。 Exchange 2010 中的 Import-RecipientDataProperty cmdlet 不允许上传超过 10 KB 的图像。

用于更新用户 jkuznetsov 照片的 EMS 命令如下所示:

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

Exchange 2013/2016 中的 EMS 使用另一个 cmdlet 来管理用户照片 - Set-UserPhoto。以下命令用于在这些版本的 Exchange 中添加用户的照片:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
$usrphotofile = ([Byte[]] $(Get-Content -Path "C:\PS\jkuznetsov_photo.jpg" -Encoding Byte -ReadCount 0))
Set-UserPhoto -Identity jkuznetsov -PictureData $usrphotofile -Confirm:$False
Set-UserPhoto -Identity jkuznetsov -Save -Confirm:$False

要从 Active Directory 中删除缩略图照片,请使用以下命令:

Remove-UserPhoto -Identity jkuznetsov

用户还可以通过 Outlook Web Access (OWA) 自行更改个人资料照片。点击右上角您的帐户,选择编辑信息 -> 照片 -> 单击更改按钮并指定包含用户照片的jpeg文件的路径。

[玩转系统] 使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片

如何使用PowerShell批量导入用户照片到AD?

您可以使用 PowerShell 将用户的照片批量上传到 Active Directory 并进行管理。创建一个 CSV 文件,其中包含用户帐户列表和相应的照片文件名。您可以使用逗号分隔的格式

import.csv

文件:

AD_username, Photo
asmith, C:\PS\asmith.jpg
[email protected], C:\PS\klinton.jpg
jkuznetsov, C:\PS\jkuznetsov.png

以下 PowerShell 一行命令将从 CSV 文件获取用户列表并将其照片更新(上传)到 Active Directory:

Import-Csv C:\PS\import.csv |%{Set-ADUser -Identity $_.AD_username -Replace @{thumbnailPhoto=([byte[]](Get-Content $_.Photo -Encoding byte))}}

如何将用户照片从 Active Directory 导出到 JPG 文件?

您可以将 AD 用户照片保存为图形文件。为此,请使用 Get-ADUser cmdlet 选择用户:

$ADuser = Get-ADUser jkuznetsov-Properties thumbnailPhoto

并将thumbnailPhoto属性的内容保存到JPG文件中:

$ADuser.thumbnailPhoto | Set-Content c:\PS\jkuznetsov.jpg -Encoding byte

使用以下 PowerShell 脚本,您可以将所有用户的照片从特定容器 (OU) 导出到文件:

Import-Module ActiveDirectory
$ADusers= Get-ADUser -Filter * -SearchBase "OU=Users,OU=Paris,DC=a-d,DC=com" -Properties thumbnailPhoto | ? {$_.thumbnailPhoto}
foreach ($ADuser in $ADusers) {
$name = $ADuser.SamAccountName + ".jpg"
$ADuser.thumbnailPhoto | Set-Content $name -Encoding byte
}

最后,还有一些有用的查询。第一个允许选择在thumbnailPhoto AD 属性中拥有照片的所有用户:

Get-ADUser -Filter * -properties thumbnailPhoto | ? {$_.thumbnailPhoto} | select Name

第二个允许您找到没有照片的用户:

Get-ADUser -Filter * -properties thumbnailPhoto | ? {(-not($_.thumbnailPhoto))} | select Name

将照片选项卡添加到 Active Directory 用户和计算机控制台

如果您不喜欢 PowerShell,可以使用图形 (GUI) 工具来管理 Active Directory 用户的照片。

有许多第三方工具可以让 AD 用户在更方便的图形编辑器中设置照片。但此类工具的功能是多余的,并且使用第三方软件编辑AD存在一定的风险。

我最常建议使用小型库 AdExt.dll,它添加了一个单独的选项卡,用于将照片直接添加到 ADUC 控制台。

您可以在此处下载 AdExt.dll 库 - AdExt-dll-ADUC.zip

要安装该库,请运行提升的命令提示符并转到包含 .Net Framework 二进制文件的目录:

  • 对于 x86 Windows:

    cd %WinDir%\Microsoft.NET\Framework\v2.0.50727
  • 对于 x64 Windows:

    cd %WinDir%\Microsoft.NET\Framework64\v4.0.30319

根据安装的 .Net Framework 版本,路径可能会有所不同。

使用以下命令安装库:

InstallUtil.exe c:\ps\ad\AdExt.dll

[玩转系统] 使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片

重新启动 ADUC (dsa.msc) 控制台,然后打开任何用户的属性。请注意,出现了一个新的照片选项卡,您可以在其中添加或删除用户的照片。

[玩转系统] 使用 ThumbnailPhoto 属性管理 Active Directory 中的用户照片

要删除(取消注册)AdExt.dll 库,请运行以下命令:

InstallUtil.exe /u c:\ps\ad\AdExt.dll

照片选项卡上有两个部分:

  • 通过thumbnailPhoto属性上传照片时,照片会自动缩小为96×96的分辨率,并选择质量以使大小不超过10 Kb。

  • 如果您通过 jpegPhoto 上传图片,则会更改图像质量,使照片大小小于 100 Kb。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯