Administrar fotos de usuario en Active Directory usando el atributo ThumbnailPhoto

Las cuentas de usuario de Active Directory tienen un especial thumbnailPhoto atributo en el que la foto de un usuario se puede almacenar como datos binarios. Outlook, OWA, Lync / Skype for Business, SharePoint (y otras aplicaciones) pueden usar la foto almacenada en este atributo de AD como avatar del usuario en su interfaz. Además, estas fotos se pueden utilizar como imagen de la cuenta de usuario de Windows.

En este artículo, le mostraremos cómo agregar (cargar) la foto de un usuario a Active Directory usando PowerShell, OWA o el complemento Usuarios y equipos de Active Directory, así como cómo guardar (exportar) el valor del atributo thumbnailPhoto a un archivo jpeg.

Atributo ThumbnailPhoto en Active Directory

Los principales aspectos y restricciones del uso de fotos de usuarios en AD:

  • El tamaño máximo de foto en el atributo thumbnailPhoto del objeto de usuario es de 100 KB. Sin embargo, existe una recomendación general de utilizar un formato de archivo gráfico JPEG / BMP de hasta 10 KB y 96 × 96 píxeles de tamaño como la foto del usuario en AD;
  • Para mostrar una foto en Outlook 2010 o más reciente, se requiere al menos una versión del esquema de Active Directory de Windows Server 2008;
  • Si hay muchas fotos de usuario en Active Directory, el tráfico de replicación entre controladores de dominio aumenta debido al crecimiento del archivo NTDS.DIT ​​(base de datos AD);
  • Los usuarios pueden cambiar su propia foto en AD. Si necesita delegar la capacidad de cargar fotos a otros usuarios (por ejemplo, el departamento de recursos humanos), debe utilizar el asistente de delegación de AD para otorgar al grupo el permiso «Escribir foto en miniatura» a la unidad organizativa con cuentas de usuario.

¿Cómo agregar / actualizar una foto de usuario en AD usando PowerShell?

Para agregar (cargar) una foto de usuario a Active Directory usando PowerShell, debe usar el Módulo de Active Directory para Windows PowerShell (que forma parte de las herramientas de administración de RSAT). Primero, debe convertir el archivo de imagen en una matriz de bytes y luego usar el Set-ADUser cmdlet para establecerlo como el valor del atributo thumbnailPhoto.

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

Lo mismo en PowerShell one-liner:

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

Powershell establece (carga) la miniatura de usuario de la foto en el directorio activo

Después de que se hayan ejecutado estos comandos, la foto de usuario almacenada en la base de datos de Active Directory se mostrará en Outlook, Lync / Skype, OWA, etc. (puede llevar algún tiempo hasta el final de la replicación de AD y la actualización de GAL).

Puede abrir las propiedades del usuario en la consola de Usuarios y equipos de Active Directory (ADUC), ir a la pestaña Editor de atributos y asegurarse de que el atributo thumbnailPhoto ahora contiene un valor.

ver el valor del atributo thumbnailPhoto en el complemento del directorio activo

Gestión de fotos de usuario en Exchange y Outlook Web Access

El Shell de administración de Exchange admite la misma función de importar fotos de usuarios de AD. Para hacerlo, puedes usar Import-RecipientDataProperty cmdlet.

Nota. El cmdlet Import-RecipientDataProperty de Exchange 2010 no permite cargar una imagen de más de 10 KB.

El comando EMS para actualizar una foto del usuario jkuznetsov se verá así:

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

EMS en Exchange 2013/2016 usa otro cmdlet para administrar las fotos de los usuarios: Set-UserPhoto. Los siguientes comandos se utilizan para agregar la foto de un usuario en estas versiones de Exchange:

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

Para eliminar una foto en miniatura de Active Directory, use el comando:

Remove-UserPhoto -Identity jkuznetsov

Los usuarios también pueden cambiar su foto de perfil ellos mismos a través de Outlook Web Access (OWA). Haga clic en su cuenta en la esquina superior derecha, seleccione Editar informacion -> Foto -> haga clic en el cambio y especifique la ruta al archivo jpeg con la foto del usuario.

aplicación web outlook cargar foto de usuario

¿Cómo importar fotos de usuario a AD a granel con PowerShell?

Puede cargar y administrar de forma masiva las fotos de los usuarios en Active Directory con PowerShell. Cree un archivo CSV que contenga una lista de cuentas de usuario y los correspondientes nombres de archivo de fotos. Puede utilizar el formato separado por comas del import.csv expediente:

AD_username, Photo
asmith, C:PSasmith.jpg
[email protected], C:PSklinton.jpg
jkuznetsov, C:PSjkuznetsov.png

El siguiente comando de una sola línea de PowerShell obtendrá la lista de usuarios de un archivo CSV y actualizará (cargará) sus fotos en Active Directory:

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

¿Cómo exportar una foto de usuario de Active Directory a un archivo JPG?

Puede guardar una foto de usuario de AD en un archivo gráfico. Para hacerlo, seleccione el usuario mediante el cmdlet Get-ADUser:
$ADuser = Get-ADUser jkuznetsov-Properties thumbnailPhoto

Y guarde el contenido del atributo thumbnailPhoto en un archivo JPG:

$ADuser.thumbnailPhoto | Set-Content c:PSjkuznetsov.jpg -Encoding byte

Con el siguiente script de PowerShell, puede exportar fotos de todos usuarios de un contenedor específico (OU) a archivos:

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

Y finalmente, hay algunas consultas útiles. El primero permite seleccionar a todos los usuarios que tienen una foto en el atributo thumbnailPhoto AD:

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

El segundo te permite encontrar usuarios sin foto:

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

Agregar una pestaña de foto a la consola de usuarios y equipos de Active Directory

Si no le gusta PowerShell, puede usar las herramientas gráficas (GUI) para administrar fotos de los usuarios de Active Directory.

Hay una serie de herramientas de terceros que permiten configurar fotos para los usuarios de AD en editores gráficos más convenientes. Sin embargo, la funcionalidad de tales herramientas es redundante y existen ciertos riesgos de usar software de terceros para editar AD.

Con mayor frecuencia sugiero usar la biblioteca pequeña AdExt.dll, que agrega una pestaña separada para agregar una foto directamente a la consola ADUC.

Puede descargar la biblioteca AdExt.dll aquí – AdExt-dll-ADUC.zip

Para instalar la biblioteca, ejecute el símbolo del sistema elevado y vaya al directorio con los archivos binarios de .Net Framework:

  • Para Windows x86: cd %WinDir%Microsoft.NETFrameworkv2.0.50727
  • Para Windows x64: cd %WinDir%Microsoft.NETFramework64v4.0.30319

Instale la biblioteca con el comando:

InstallUtil.exe c:psadAdExt.dll

instalar la extensión adext.dll

Reinicie la consola ADUC (dsa.msc), luego abra las propiedades de cualquier usuario. Tenga en cuenta que un nuevo Foto Ha aparecido la pestaña, donde puede agregar o eliminar la foto de un usuario.

aduc agregar / cargar foto de usuario a través de la pestaña aduc adicional

Para eliminar (anular el registro) la biblioteca AdExt.dll, ejecute el comando:

InstallUtil.exe /u c:psadAdExt.dll

Hay dos secciones en la pestaña Foto:

  • Al cargar una foto a través del thumbnailPhoto atributo, la foto se reduce automáticamente a una resolución de 96 × 96, y la calidad se selecciona para que el tamaño no supere los 10 Kb.
  • Si subes una imagen a través de jpegPhoto, luego se cambia la calidad de la imagen para que el tamaño de la foto sea inferior a 100 Kb.

Artículos Interesantes