Outlook, SharePoint, Skype for Business, Office365 y otras aplicaciones de Microsoft le permiten usar una foto de Active Directory (o Azure AD) del usuario actualmente conectado como avatar de usuario en su interfaz. En este artículo, le mostraremos cómo usar la directiva de grupo y el script de PowerShell para configurar la foto de usuario de Active Directory como una imagen de perfil de usuario (avatar) en Windows 10 (la imagen de perfil de Windows se muestra en la pantalla de bloqueo, la pantalla de bienvenida, en el menú Inicio, etc.).
Nuestro script funcionará de la siguiente manera: cuando un usuario inicia sesión en Windows 10, se debe ejecutar un script de PowerShell; obtiene la foto del usuario del atributo de usuario thumbnailPhoto en Active Directory, guarda el archivo de imagen en una unidad local y establece este archivo como la imagen de la cuenta de usuario en el perfil actual. La solución debería funcionar en todos los clientes compatibles: Windows 10, 8.1, 7 y en hosts RDS que ejecutan Windows Server 2016/2012 R2.
¿Cómo configurar una foto para un usuario de Active Directory?
En primer lugar, configure las fotos para los usuarios de AD cargando archivos de imagen en el atributo de un usuario especial thumbnailPhoto. Puede configurar fotos de usuario mediante herramientas de terceros o mediante el módulo ActiveDirectory para Windows PowerShell. Tenga en cuenta que el tamaño máximo del archivo de imagen de avatar no debe exceder los 100 Kb con una resolución de imagen de hasta 96 × 96 píxeles. Puede configurar la imagen de la cuenta de AD para un usuario jchan como sigue:
$photo = [byte[]](Get-Content C:PSjchan_photo.jpg -Encoding byte)
Set-ADUser jchan -Replace @{thumbnailPhoto=$photo}
Proporcionar permisos a los usuarios para cambiar la imagen de perfil en Windows
En Windows 10, puede configurar la imagen de perfil de la cuenta de usuario a través de la clave de registro HKLM SOFTWARE Microsoft Windows CurrentVersion AccountPicture Users. Sin embargo, los usuarios que no son administradores no tienen los permisos necesarios para agregar valores a esta clave de registro. Para permitir que los usuarios sin privilegios de administrador cambien la imagen de perfil, debe otorgarles permisos de escritura en esta clave de registro.
Es más fácil implementar los permisos de la clave de registro en el dominio de AD mediante GPO:
- Para hacer esto, ejecute la consola de administración de políticas de grupo (gpmc.msc), cree una nueva política y vincúlela a la unidad organizativa con las computadoras de los usuarios;
- Luego, en el editor de GPO, vaya a la siguiente sección Configuración de la computadora -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Registro y agregue una nueva clave de registro (Agregar clave) con el camino MÁQUINA SOFTWARE Microsoft Windows CurrentVersion AccountPicture Users;
- Luego, en la pestaña Seguridad, marque la Control total permisos para todos los usuarios del dominio ( [DomainName] Usuarios) y haga clic en Aceptar;
- En la siguiente ventana, seleccione la opción Reemplazar el permiso existente en todas las subclaves con permisos heredables, de lo contrario, los usuarios no tendrán ningún privilegio para las subclaves de registro anidadas.

Secuencia de comandos de PowerShell para obtener la foto del usuario de AD y establecer la imagen de perfil de usuario en Windows 10
Luego, debemos ejecutar un script de PowerShell que debería obtener una foto del usuario actual de Active Directory, guardarlo en un archivo jpg y configurarlo como una imagen de perfil de usuario de Windows. Hay dos formas de obtener una foto de usuario de AD. Puede usar el cmdlet Get-ADUser del módulo ActiveDirectory (este módulo debe instalarse en todas las computadoras a través de RSAT, o simplemente puede copiar los archivos del módulo RSAT-AD-PowerShell necesarios sin instalar RSAT). Dado que el script tiene que ser universal y funcionar también en Windows 7, no usaremos el módulo RSAT-AD-PowerShell, pero accederemos a AD a través de la clase ADSISearcher C #.
Un ejemplo del SetADPicture.ps1 El script para obtener la foto de un usuario de AD y configurarlo como una imagen de avatar de la cuenta de Windows se muestra a continuación:
[CmdletBinding(SupportsShouldProcess=$true)]Param()
function Test-Null($InputObject) { return !([bool]$InputObject) }
$ADuser = ([ADSISearcher]"(&(objectCategory=User)(SAMAccountName=$env:username))").FindOne().Properties
$ADuser_photo = $ADuser.thumbnailphoto
$ADuser_sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
If ((Test-Null $ADuser_photo) -eq $false) {
$img_sizes = @(32, 40, 48, 96, 192, 200, 240, 448)
$img_mask = "Image{0}.jpg"
$img_base = "C:UsersPublicAccountPictures"
$reg_base = "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionAccountPictureUsers{0}"
$reg_key = [string]::format($reg_base, $ADuser_sid)
$reg_value_mask = "Image{0}"
If ((Test-Path -Path $reg_key) -eq $false) { New-Item -Path $reg_key }
Try {
ForEach ($size in $img_sizes) {
$dir = $img_base + "" + $ADuser_sid
If ((Test-Path -Path $dir) -eq $false) { $(mkdir $dir).Attributes = "Hidden" }
$file_name = ([string]::format($img_mask, $size))
$path = $dir + "" + $file_name
Write-Verbose " saving: $file_name"
$ADuser_photo | Set-Content -Path $path -Encoding Byte -Force
$name = [string]::format($reg_value_mask, $size)
$value = New-ItemProperty -Path $reg_key -Name $name -Value $path -Force
}
}
Catch {
Write-Error "Check permissions to files or registry."
}
}
El script obtiene el valor del atributo thumbnailphoto del usuario actual de AD y lo guarda en la carpeta local C: Users Public AccountPictures {User SID}. La carpeta contendrá archivos con archivo de imagen con diferentes resoluciones (de 32 × 32 a 448 × 448 píxeles) para diferentes elementos de la interfaz de Windows 10: image32.jpg, image40.jpg, etc.
La vinculación de fotos al perfil de usuario se realiza a través del parámetro en la clave de registro HKLM SOFTWARE Microsoft Windows CurrentVersion AccountPicture Users {User_SID}.

Ejecución de la secuencia de comandos de PowerShell para vincular fotos a un perfil mediante GPO
Ahora queremos ejecutar el script SetADPicture.ps1 cuando un usuario inicia sesión en Windows. Es más fácil hacerlo usando un script de inicio de sesión de GPO.
Para hacerlo, en la política previamente creada en el apartado Configuración de usuario -> Políticas -> Configuración de Windows -> Scripts (inicio / cierre de sesión) cree un nuevo script de inicio de sesión de PowerShell:
- El nombre del guión:
%windir%System32WindowsPowerShellv1.0powershell.exe - Los parámetros del script:
-Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%netlogonscriptSetADPicture.ps1

Importante. El script SetADPicture.ps1 debe copiarse previamente en la carpeta netlogon script en el controlador de dominio.
En la configuración de la política, habilite el modo de procesamiento de bucle invertido de GPO (Configuración del equipo -> Plantillas administrativas -> Sistema -> Política de grupo -> Configurar el modo de procesamiento de bucle invertido de la política de grupo del usuario = Unir). En este modo, puede aplicar la política a OU con cuentas de usuario.
Solo tiene que vincular la política a las unidades organizativas específicas, cerrar la sesión y volver a iniciar sesión en Windows.

Se asignará un avatar al perfil de usuario de Windows 10 y se mostrará correctamente como una imagen de cuenta en el menú Inicio, en la pantalla de bienvenida y en otros lugares después del próximo inicio de sesión. Esta guía de asignación de fotos de perfil se ha probado en Windows 10 LTSC (1809).





