Stocker et accèder à des attributs utilisateurs dans SharePoint sans utiliser le Service de Profil Utilisateur

La voie royale pour le stockage des attributs utilisateurs dans SharePoint est le Service de Profil Utilisateur (User Profile Service) qui permet de stocker et de manipuler de très nombreux attributs pré-configurés ou ajoutés pour l'occasion. De plus le Service de Synchronisation des profils utilisateurs permet de rapatrier tout un ensemble d'attributs, notamment depuis Active Directory.

Pour certaines installation, il est parfois souhaitable de ne pas utiliser le Service de Profil Utilisateur pour stocker ces données.

Les attributs de base des utilisateurs sont stockés directement dans l'objet User. SharePoint Foundation ne disposant pas du Service de Profil Utilisateur, il utilise un mécanisme de stockage des attributs étendus sous forme d'une liste nommée User Information List.

Lorsque le Service de Profil Utilisateur n'est pas utilisé, les informations concernant les utilisateurs sont stockées par collection de site, il est donc possible de voir des informations complètement différentes d'un site à l'autre (s'ils ne sont pas dans la même collection) et surtout d'une application Web à l'autre.

Voici comment accéder aux attributs de base avec une console PowerShell pour SharePoint.

Récupérer un objet de type site:

$siteGet-SPSite "http://intranet.local/documents"

Récupérer le site racine de la collection de site:

$web = $site.RootWeb

Récupérer un objet utilisateur:

$user = $web | Get-SPUser -Identity "domaine\cdupont"
Afficher les attributs de l'utilisateurs:

$user.Name
-> Charles Dupont
$user.Email
-> cdupont@compagnie.local

Pour changer un attribut:
$user.DisplayName = "Mr Charles"
$user.Update()

Voici comment accéder aux attributs étendus avec une console PowerShell pour SharePoint.

Récupérer les différents objets:

$site = Get-SPSite "http://intranet.local/documents"
$web = $site.RootWeb
$user = $web | Get-SPUser -Identity "domaine\cdupont"

Récupérer la liste des attributs étendus:

$list = $web.SiteUserInfoList

Récupérer les attributs de l'utilisateur:

$userItem$list.GetItemById($user.ID)

Afficher les attributs étendus de l'utilisateurs:

$userItem["Department"]
-> Finances
$userItem["JobTitle"]
-> Comptable

Pour changer un attribut:

$userItem["FirstName"] = "Charles"
$userItem.Update()

Il est dès lors possible d'écrire un script PowerShell pour importer des attributs utilisateurs depuis tous les sources possibles et imaginables...

Commentaires

Posts les plus consultés de ce blog

Importer les contacts Outlook dans le Carnet d'Adresses de Mac OS X

Découverte de la connexion fibre du SIEA/RESO-LIAin

SIEA/RESO-LIAin: regarder la télévision sur son ordinateur