Synchro de profil SharePoint : Domaine NETBIOS différent du nom de Domaine ><


Explication

Dans la plupart des entreprises le nom de domaine est identique au nom de domaine NETBIOS.

Par exemple, pour un domaine DOMAINE.INIT le nom NETBIOS correspondant est DOMAINE.

Mais chez certains, cette règle n’est pas vraie. Par exemple, le domaine est DOMAINE-LOCAL.INIT et le nom NETBIOS du domaine est DOMAINE.

Donc l’ouverture de session d’un utilisateur se fait sous la forme DOMAINE\utilisateur.

Ce type de configuration nécessite un certain paramétrage pour l’application de profil utilisateur de SharePoint 2010 (UPA : User Profil Application)

Si ce n’est pas fait, vous allez vous retrouver dans le cas de figure ci-dessous.


Configuration de l’Application de profil

Lancer le PowerShell SharePoint

Lancer la commande
Get-SPServiceApplication | Format-List name, id

Copier l’ID de l’application de service de profil utilisateur

Récupérer l’occurrence de l’application à l’aide de la commande

 $upa = Get-SPServiceApplication –Identity {GUID copier précédemment}

Modifier la propriété NetBiosDomaineNamesEnabled de votre application de service de profil via la commande

$upa.NetBiosDomainNamesEnabled = « True »

Valider les modifications sur l’application de service

$upa.update()


Ajout des droits sur la partition de configuration

Bon nombre d’articles vous indiqueront de recréer la connexion de synchronisation maintenant, or ce n’est pas suffisant.

Il est nécessaire de rajouter des droits au compte utilisé par l’application de service de synchronisation de profil sur la partition de configuration de votre AD.

Si vous ne faites pas cette étape, vous allez vous retrouver avec un accès refusé sur cette partition d’annuaire lors de la synchronisation et aucun profil ne sera récupéré.

Captures issues de l’outil MIISCLIENT (C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe)

Pour faire cette modification de droit, il est nécessaire d’être logué avec un compte administrateur de l’entreprise.

Ouvrir la MMC ADSIEDIT .

Se connecter à la partition de Configuration de l’AD .

Modifier les propriétés de la partition

Dans l’onglet « Sécurité », rajouter le compte utilisé pour la synchronisation de profil avec l’autorisation « Répliquer les changements de répertoire ».


Recréation de la connexion de synchronisation

Rendez-vous dans l’application de service profil utilisateur.

Supprimer la connexion de synchronisation existante.

Recréer la connexion vers votre AD.

Relancer une synchronisation.

Les profils sont modifiés et sont maintenant dans le bon format DOMAINE\utilisateur


Publicités

Import des photos dans les profils SharePoint 2010

SharePoint 2010 comme 2007 d’ailleurs permet d’identifier les utilisateurs grâce à une photo. Celle-ci est inscrite dans le profil de l’utilisateur.

Beaucoup d’entreprises disposent d’une base de photos des utilisateurs. Il est donc intéressant de pouvoir faire un import en masse de ces photos dans les profils SharePoint.

Le but de cet article, vous l’aurez compris, sera de mettre à jour les profils des utilisateurs via un script.

Alors c’est parti !

Créer un fichier texte mais avec l’extension .ps1 (Powershell)

Copier/coller le texte ci-dessous dans votre fichier. Vous pouvez également télécharger le script depuis le lien fourni en bas de page.

#---------------------------------------------------------------------------------
# Default Values
#---------------------------------------------------------------------------------
$spNotFoundMsg = "Unable to connect to SharePoint.  Please verify that the site '$PortalURL' is hosted on the local machine.";
#-----------------------------------------------------# Load Assemblies
#-----------------------------------------------------
if ([Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") -eq $null)		{ throw $spNotFoundMsg; }
if ([Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") -eq $null)	{ throw $spNotFoundMsg; }#-----------------------------------------------------

# Functions
#-----------------------------------------------------
function ToSimpleString([string]$value, [bool]$trim = $true, [bool]$removeSpaces = $true, [bool]$toLower = $true)
{
	if ($value -eq $null) {
		return [System.String]::Empty; }
	if ($trim)
	{
		$value = $value.Trim();
	}
	if ($removeSpaces)
	{
		$value = $value.Replace(" ", "");
	}
	if ($toLower)
	{
		$value = $value.ToLower();
	}
	return $value;
}

function GetSPSite($url)
{
	[Microsoft.SharePoint.SPSite]$site = New-Object "Microsoft.SharePoint.SPSite" -ArgumentList $url
	return $site;
}

function GetSpContext($url)
{
	[Microsoft.SharePoint.SPSite]$site = GetSPSite -url $url
	return [Microsoft.Office.Server.ServerContext]::GetContext($site);
}

function GetProfileManager($url)
{
	[Microsoft.Office.Server.ServerContext]$ctx = GetSpContext -url $url
	[Microsoft.Office.Server.UserProfiles.UserProfileManager]$upm = New-Object "Microsoft.Office.Server.UserProfiles.UserProfileManager" -ArgumentList $ctx
	return $upm;
}
function GetProfilePropertyName($userProfileManager, $propertyName)
{
	$propertyName = (ToSimpleString -value $propertyName);
	$propertyName = $propertyName.Replace("sps-", "");
	foreach($prop in $userProfileManager.Properties)
	{
		[string]$n = (ToSimpleString -value $prop.DisplayName);
		$n = $n.Replace("sps-", "");
		if ($propertyName -eq $n) {
			return $prop.Name.ToString(); }
		$n = (ToSimpleString -value $prop.Name);
		$n = $n.Replace("sps-", "");
		if ($propertyName -eq $n) {
			return $prop.Name.ToString(); }
	}
	return $null;
}

function Set-UserPictures([string] $PortalURL, [string] $UserFile, [string] $Domain )
{
	Import-Csv $UserFile | foreach-object {
		$upm = GetProfileManager -url $PortalURL;
		$name=$Domain + "\" + $_.LoginName;
		Write-Host $name;
		$up = $upm.GetUserProfile($name);
		$picturePropertyName = GetProfilePropertyName -UserProfileManager $upm -PropertyName "PictureUrl";

		if (-not [System.String]::IsNullOrEmpty($picturePropertyName))

		{
			$PortraitUrl = $PortalURL + $_.Picture;
			Write-Host $PortraitUrl;
			$up[$picturePropertyName].Value = $PortraitUrl;
			$up.Commit();
		}
	}
}

Le principe du script est relativement simple, à partir d’un fichier CSV contenant le login de l’utilisateur et le nom de la photo correspondante, le script va chercher la fiche profil de l’utilisateur.
Puis récupérer la propriété correspondant à l’image du profil.
Enfin, il écrit le chemin où se trouve les photos dans la propriété de profil.
Le tour est joué.

Donc vous allez avoir besoin d’un fichier CSV de la forme :

 LoginName,Picture
 dnoblet,dnoblet.jpg
 cdurand,cdurand.jpg
 

Il est nécessaire de stocker toutes les images dans un lieu accessible du serveur SharePoint.
Quoi de mieux me direz vous, qu’une bibliothèque d’images !

Ajouter l’ensemble de vos images dans cette bibliothèque, le stockage est temporaire.

Maintenant l’appel à la fonction, cette ligne est à ajouter à la fin du fichier.

Set-UserPictures "http://sharepoint/PublishingImages/" "users.csv" "DOMAIN"

3 arguments :

  • Le chemin de la bibliothèque où se trouve les images.
  • Le nom du fichier CSV (chemin ci celui-ci n’est pas dans le répertoire que le script).
  • Le nom de domaine des utilisateurs.

Je lance le SharePoint 2010 Management Shell et lance l’exécution du script.

Le script indique pour chaque ligne du CSV le nom de login de l’utilisateur et le chemin complet vers l’image.

Il est possible de vérifier le bon fonctionnement en allant éditer la fiche profil des utilisateurs.

Rendez-vous pour cela dans l’application de service de profil utilisateur accessible depuis la centrale d’administration.

Cliquer sur le lien « Gérer les profils utilisateurs ».

Rechercher la fiche profil d’un utilisateur et vérifier que l’image est bien en place.

Oops la photo n’est pas retaillée, le travail n’est donc pas terminé.

Lancer la commande suivante, toujours dans le PowerShell :

Update-SPProfilePhotoStore -MySiteHostLocation "http://my/"
Où « http://my &raquo; est l’hôte de site monsite
Cette commande va établir 3 images pour chaque profil. Et va les stocker dans la bibliothèque « Photos de l’utilisateur » du MySite.
Bien sur les profils des utilisateurs sont modifiés pour utiliser l’image dans le format adéquat.
Vous savez maintenant comment effectuer un import en masse des photos des utilisateurs dans SharePoint 2010.
Sources:
Note : il est possible que l’invite PowerShell n’autorise pas l’exécution du script, dans ce cas modifier la politique de sécurité en lançant la commande : Set-ExecutionPolicy -ExecutionPolicy unrestricted
kOuilb
%d blogueurs aiment cette page :