Uploader automatiquement les photos des utilisateurs SharePoint sur leur profil en PowerShell

Jul 28, 2011

Récemment on m’a posé la question suivante au travail (SOGETI) : y-a-t-il un moyen si je possède toutes les photos de mes utilisateurs dans un répertoire, de les pousser sur leur profil en une seule fois ?

A cela je réponds oui et vous pourrez trouver mon script ici joint.

Avant tout je vous conseille de lire l’article en Anglais de Chris Johnson qui a déjà bien déblayé le terrain.

https://blogs.msdn.com/b/cjohnson/archive/2010/05/08/sharepoint-2010-office-2010-and-profile-pictures.aspx

Je commencerai par apporter une précision à son post en indiquant qu’il faut avoir l’autorisation de Full Control sur l’application de service de synchronisation de profil utilisateur sur laquelle vous voulez ajouter des images. (et ce même si vous êtes déjà admin de la ferme sharepoint)

Pour cela rendez-vous dans l’administration centrale, manage service applications, sélectionnez la ligne de l’application de service profil utilisateur (sans cliquer sur le titre, qui vous enverrait vers les paramètres détaillés du SPU) et dans le ribbon cliquez sur permissions.

Dans cette nouvelle fenêtre ajoutez le login qui va exécuter le script et cochez full control puis ok.

Note : si vous obtenez des erreurs lors de l’exécution du script (de type null reference) c’est peut-être parce que ce nouveau paramètre n’est pas encore appliqué, il suffit de faire un iisreset /noforce et de fermer et rouvrir votre console powershell.

full_2D00_admin_2D00_spu.png

Il faut aussi que vous soyez farm admin (pour avoir accès au SharePoint Management Shell)

Parlons maintenant de notre script à proprement dit.

L’étape suivante consiste à déposer dans un répertoire toutes les photos (peu importe le poids, peu importe la taille) nommées de la manière suivante userlogonname.jpg (ou png ou autre, on en parlera plus tard).

Ensuite créez une doc lib de type Images (pictures) sur un de vos site SharePoint de la ferme, modifiez les permissions pour accorder l’accès aux utilisateurs authentifiés.

L’intérêt de cette doc lib est tout simplement de pouvoir uploader les images avant de les intégrer au profil de l’utilisateur. Il n’existe pas à ma connaissance de manière simple d’écrire directement l’image dans le profil.

Le script fonctionne de cette manière, il upload toutes les images sur une doclib, il modifie les propriétés des profils associés et enfin demande à SharePoint d’effectuer le redimensionnement et de l’intégrer directement au sein du profil. Il faut savoir que toutes les images des profils sont finalement stockées en 3 exemplaires de taille différente dans une doc lib d’images sur le mysite.

Si nous n’envoyons pas directement les images sur la doc lib cachée et par défaut du mysite c’est pour ensuite pouvoir utiliser la méthode de redimensionnement automatique fournie par SharePoint.

Une fois tout cela effectué il suffit de paramétrer le script : (voir à la fin du fichier)

$directory = “C:\Users\weck\Desktop\pics”; => repertoire où vous stockez les images

$photoext = “.jpg”; => extension des images, on pourra faire plusieurs passes si on a différentes extensions

$myUrl = “https://hulk/my”; => url du mysite

$siteUrl = “https://dev1.dev.local/"; => url du site sur lequel vous avez créé la doclib, ne pas oublier le / final

$libName = “Pics”; => nom de la doc lib dans laquelle stocker les images

$List = get-childitem $directory | where {$_.extension -eq $photoext};

$upm = (GetProfileManager -url $myUrl);

$domain = “DEV”; => domaine des utilisateurs (uniquement le nom court, pas le fqdn)

Sauvegardez le script, lancez-le en mode administratif. Dans la sortie vous verrez à quelle image fait-on correspondre quel utilisateur et si une image n’a pas trouvé de correspondance.

Voila vos images sont uploadées!

!elladucashprofile.JPG

Notes : Si l’utilisateur n’a jamais créé son profil, il sera créé automatiquement pour lui à partir de ce qui est exploitable dans l’Active Directory.

Ce script est assez gourmand si on traite un gros volume de données, évitez de l’exécuter aux heures de pointe.

Une fois l’upload des images effectué et une synchro du service profil utilisateur passée, vous pourrez supprimer la doc lib que vous avez créée pour uploader les images.

Ce script est perfectible en termes de performances et de mécaniques mais je l’ai laissé assez brut pour que vous puissiez l’adapter facilement aux situations que vous rencontrerez.

Enjoy !


Edité la dernière fois le 27 May 2021 par Vincent Biret


Tags: