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))}
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.
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.
¿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
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.
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
Relacionados:
Contenido