Comment configurer la photo miniature d’un utilisateur dans Active Directory

Les comptes utilisateurs d’Active Directory possèdent un attribut thumbnailPhoto particulier, un peu étrange mais pratique : il stocke la photo de l’utilisateur. Celle-ci peut servir d’avatar dans Outlook, OWA, Word, Excel, Skype Entreprise, Teams, SharePoint et même comme image de connexion sur ordinateur. Le problème, c’est que la gestion de ces photos n’est pas toujours simple. Il arrive parfois qu’une photo téléchargée ne s’affiche nulle part, ou que l’on tente de mettre à jour plusieurs photos simultanément ou de les récupérer depuis Active Directory. Ce guide a pour but de vous expliquer comment ajouter, mettre à jour ou résoudre les problèmes liés aux photos des utilisateurs dans Active Directory. Ces informations vous seront particulièrement utiles si vous gérez de nombreux comptes ou si vous souhaitez uniformiser l’apparence des profils utilisateurs.

Ces photos sont généralement stockées sous forme de données binaires dans l’ thumbnailPhotoattribut correspondant. Vous pouvez le définir ou le mettre à jour à l’aide de PowerShell, du composant logiciel enfichable Utilisateurs et ordinateurs Active Directory (avec une petite extension), ou même d’outils tiers. Attention ! La taille, la résolution et le format de l’image sont importants. Pour des performances et une compatibilité optimales, il est recommandé d’utiliser des images JPEG d’environ 10 Ko et de 96 × 96 pixels. L’utilisation d’images plus volumineuses peut faire exploser la taille de la base de données Active Directory et le trafic réseau, car, bien sûr, Windows a tendance à compliquer les choses inutilement.

Comment ajouter/mettre à jour la photo d’un utilisateur dans Active Directory à l’aide de PowerShell

Méthode 1 : Utilisation directe des commandes PowerShell pour télécharger une photo

Alors, en quoi est-ce utile ? PowerShell permet d’intégrer des images à Active Directory sans passer par une interface graphique ni un logiciel tiers, ce qui est particulièrement pratique pour l’automatisation et les actions groupées. Cette méthode s’applique aux fichiers JPEG, PNG ou BMP que vous souhaitez associer à un utilisateur Active Directory, et pour lesquels vous êtes à l’aise avec quelques manipulations en ligne de commande. Après conversion de votre image en données brutes, la photo s’affichera dans Outlook/Exchange et d’autres applications une fois que Active Directory aura répliqué ces informations sur l’ensemble du domaine.

En général, le processus se déroule comme suit : commencez par convertir votre image en un tableau d’octets :

$photo = [byte[]](Get-Content C:\PS\jkuznetsov_photo.jpg -Encoding byte)

Ensuite, téléchargez-le en utilisant :

Set-ADUser jkuznetsov -Replace @{thumbnailPhoto=$photo}

Cela indique à AD de remplacer la photo actuelle (ou d’en définir une si elle est manquante).La version en une seule ligne est pratique :

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

Attention : assurez-vous que l’image ne dépasse pas 100 Ko et qu’elle est au format JPEG pour une compatibilité optimale. Sur certains systèmes, après l’exécution de cette opération, la photo ne s’affiche pas immédiatement ; il peut être nécessaire d’actualiser Outlook ou d’attendre la réplication, ce qui est assez frustrant. Parfois, sur certains ordinateurs, l’attribut peut ne pas se mettre à jour instantanément, mais un redémarrage d’Outlook ou des problèmes de cache en sont souvent la cause.

Sinon, pour les mises à jour en masse, vous pouvez préparer un fichier CSV comme celui-ci :

AD_username, Photo asmith, C:\PS\asmith.jpg john.doe, C:\PS\john_doe.png jkuznetsov, C:\PS\jkuznetsov.jpg

Ensuite, exécutez :

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

Voilà le genre de chose qui fait gagner du temps, surtout lorsqu’on gère de nombreux comptes.À noter : si vous souhaitez afficher les images des contacts Outlook, vous devrez peut-être activer l’option « Afficher les photos des utilisateurs si disponibles » dans les paramètres d’Outlook, car Windows et Outlook masquent généralement cette fonctionnalité par défaut.

Méthode 2 : Extraire une photo de l’annonce et l’enregistrer au format JPG

Si vous essayez d’extraire une photo d’AD, peut-être pour l’utiliser ailleurs ou simplement pour la sauvegarder, il suffit d’extraire le tableau d’octets et de l’enregistrer dans un fichier :

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

Le problème, c’est que sur certaines machines, l’enregistrement du tableau d’octets dans un fichier ne fonctionne pas toujours correctement ; il faut parfois s’assurer du bon encodage ou utiliser des outils tiers. Mais en général, cette méthode suffit, surtout si vous devez vérifier ou recharger les images ultérieurement.

Importer les photos des utilisateurs dans Exchange avec PowerShell ou OWA

Si vous utilisez Exchange Server (2013, 2016, 2019) et souhaitez que les photos s’affichent dans Outlook ou dans la liste d’adresses globale, utilisez la commande Set-UserPhoto. Son fonctionnement diffère légèrement de celui d’Active Directory, car les photos sont stockées directement dans la boîte aux lettres, ce qui garantit un affichage plus fiable pour l’utilisateur final.

Vous chargerez le module Exchange et exécuterez :

Add-PSSnapin Microsoft. Exchange. Management. PowerShell. SnapIn Set-UserPhoto -Identity jkuznetsov -PictureData ([System. IO. File]::ReadAllBytes("C:\PS\jkuznetsov_photo.jpg")) -Confirm:$False

Ou, si vous souhaitez supprimer une photo :

Remove-UserPhoto -Identity jkuznetsov

Pour les versions antérieures d’Exchange, comme 2010, utilisez :

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

Remarque : La gestion des photos dans Exchange Online via Microsoft Graph nécessite des cmdlets plus récentes comme Set-MgUserPhotoContent. C’est un peu fastidieux, mais ça fonctionne.

Les utilisateurs peuvent également télécharger ou modifier leur photo de profil directement dans Outlook Web Access en cliquant sur le cercle de profil, en choisissant Modifier les informations, puis Photo, et en sélectionnant une nouvelle image. C’est souvent la méthode la plus simple si vous préférez l’interface graphique à PowerShell.

Ajout d’un onglet Photo à ADUC à l’aide d’outils tiers

Si PowerShell ou Outlook ne vous conviennent pas, des outils tiers existent, comme CodeTwo Active Directory Photos ou AD Photo Edit. Ils ajoutent un onglet d’interface graphique à ADUC, simplifiant considérablement la gestion des photos. Bien que l’utilisation d’un logiciel externe puisse être source de réticence pour des raisons de sécurité, c’est une solution plus conviviale si vous n’aimez pas programmer.

Pour les plus audacieux, une petite DLL nommée AdExt.dll ajoute un onglet « Photo » directement dans la console ADUC. Il suffit de l’enregistrer dans InstallUtil.exevotre répertoire .NET Framework, puis de redémarrer dsa.msc, et le tour est joué : l’onglet « Photo » apparaît. Vous pouvez ainsi importer des images, qui seront automatiquement redimensionnées ou compressées selon l’attribut choisi, comme miniature ou JPEG.

Pour le désenregistrer ultérieurement, il suffit d’exécuter :

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

Attention : les images sont redimensionnées, compressées ou limitées (96 × 96 pixels, 10 Ko maximum).Ne vous attendez donc pas à des portraits haute résolution. Mais c’est toujours mieux que de cliquer au hasard dans ADUC en espérant que l’image reste.

En résumé, que vous optiez pour un script, une interface graphique ou un module complémentaire tiers, la gestion des photos des utilisateurs dans Active Directory est possible, même si elle peut s’avérer fastidieuse. J’espère que ce guide permettra à d’autres d’éviter les tâtonnements interminables que j’ai rencontrés.

Résumé

  • Utilisez PowerShell pour convertir les images en tableaux d’octets et définir l’attribut thumbnailPhoto.
  • Mise à jour en masse ? Un fichier CSV associé à une boucle PowerShell permet de la gérer facilement.
  • Besoin de photos dans Outlook ou OWA ? Utilisez la commande Set-UserPhoto ou téléchargez-les directement via l’interface graphique.
  • Vous souhaitez une interface graphique ? Les outils tiers ou les extensions DLL peuvent simplifier la gestion, mais attention aux problèmes de sécurité.
  • Veillez à ce que la taille des images reste petite et uniforme afin d’éviter la surcharge de la base de données et les retards de réplication.

Conclure

Gérer les photos des utilisateurs dans Active Directory n’est pas toujours simple, mais grâce à ces astuces, c’est tout à fait faisable, surtout lors de mises à jour massives ou pour résoudre des problèmes d’images manquantes. PowerShell reste la solution idéale pour les tâches en masse ou automatisées, tandis que les interfaces graphiques conviennent parfaitement si vous n’utilisez pas de scripts. N’oubliez pas : privilégiez les images petites et optimisées ; la taille n’est pas un gage de qualité. En espérant que cela vous fasse gagner du temps ou, au moins, vous guide dans la gestion de vos photos. Bonne chance !