SharePoint Administration von Benutzerbildern in der CA: Fehler und Workaround

SharePoint Administration von Benutzerbildern in der CA: Fehler und Workaround

Standardmäßig gibt es eine einfache Möglichkeit, Benutzerprofilbilder in der Zentraladministration zu verwalten. Mit dem Service Pack 1 in Verbindung mit dem CU von Juni 2011 für Microsoft Office Produkte kommt es leider zu einem Fehler, welcher in diesem Blogartikel beschrieben wird. Anschließend wird ein kleiner Workaround mittels Powershell vorgestellt, um das Administrieren der Bilder trotzdem zu ermöglichen. In den folgenden Screens ist ein typischer Ablauf gezeigt, wie ein Administrator das Profilbild eines Benutzers anpasst: Schritt 1: Manage service applications In der Zentraladministration finden wir direkt auf der Startseite den Punkt „Manage service applications“. Darin befindet sich der „User Profile Service“ Schritt 2: Zentraladministration Hier befindet sich der oben angesprochene User Profile Service. In diesem werden die Benuzterprofile verwaltet, welche z.B. zuvor mittels AD synchronisiert wurden. Schritt 3: User Profile Service Im User Profile Service besteht die Möglichkeit, die Benutzerprofile zu verwalten. Schritt 4: Benutzerprofile verwalten Hier wird beispielhaft das Benutzerprofil „mhupe“ von Matthias Hupe ausgewählt um das Bild zu aktualisieren. Schritt 5: Profil editieren Mittels Linksklick öffnet sich das bekannte SharePoint Kontextmenü. „Edit My Profile“ öffnet die folgende Seite. Schritt 6: Benutzer editieren An dieser Stelle hat man nun die Möglichkeit, die Profilfelder des Benutzers zu editieren. Etwas weiter unten befindet sich auch das Feld für das Benutzerbild, welches an dieser Stelle aktualisiert werden soll. Schritt 7: Benutzerbild editieren Über den bekannten „File-Dialog“ können wir nun ein Bild zur Aktuallisierung auswählen. Schritt 8: Benutzerbild auswählen Dieses Ergebnis ist nach dem Upload zu erwarten. Das Benutzerbild wurde aktuallisiert. Das Profil muss nun nur noch gespeichert werden. Doch SharePoint überrascht uns nach der Installation des Service Pack 1 und der CU Juni 2011 mit folgender Meldung: Schritt 9: Achtung Errormeldung Man kann schon erahnen, dass auch ein erneuter, späterer Versuch zum gleichen Ergebnis führt.

Workaround

function Upload-PhotosToSP { Param ( [parameter(Mandatory=$true)][string]$LocalPath, [parameter(Mandatory=$true)][string]$MySiteUrl, [parameter(Mandatory=$false)][switch]$Overwrite )#Get site, web and profile manager objects $mySiteHostSite = Get-SPSite $MySiteUrl $mySiteHostWeb = $mySiteHostSite.OpenWeb() $context = Get-SPServiceContext $mySiteHostSite $profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context) try { #Get files from local folder $localPhotosFolder = Get-ChildItem $LocalPath #Get User Photos document library in the My Site host site $spPhotosFolder = $mySiteHostWeb.GetFolder(„User Photos“)#Upload each image file and configure user profiles $localPhotosFolder | ForEach-Object {#Generate file path for upload into SharePoint $spFullPath = $spPhotosFolder.Url + „/“ + $_.Name #Check if the file exists and the overwrite option is selected before adding the file if ((!$mySiteHostWeb.GetFile($spFullPath).Exists) -or ($Overwrite)) { #Add file to the User Photos library write-host „Copying“ $_.Name „to“ $spFullPath.Replace(„/“ + $_.Name,““) „in“ $mySiteHostWeb.Title „…“ -foregroundcolor Green $spFile = $spPhotosFolder.Files.Add($spFullPath, $_.OpenRead(), $true) $spImagePath = $mySiteHostWeb.Url + „/“ + $spFile.Url #Get the domain and user name from the image file name $domainName = $_.Name.Split(„_“)[0] $userName = $_.Name.Split(„_“)[1].Replace($_.Extension, „“) $adAccount = $domainName + „\“ + $userName #Check to see if user profile exists if ($profileManager.UserExists($adAccount)) { #Get user profile and change the Picture URL value $up = $profileManager.GetUserProfile($adAccount) $up[„PictureURL“].Value = $spImagePath $up.Commit() } else { write-host „Profile for user“$adAccount „cannot be found“ } } else { write-host „`nFile“$_.Name „already exists in“ $spFullPath.Replace(„/“ + $_.Name,““) „and shall not be uploaded“ -foregroundcolor Red } } #Run the Update-SPProfilePhotoStore cmdlet to create image thumbnails and update user profiles write-host „Waiting to update profile photo store – Please wait…“ Start-Sleep -s 60 Update-SPProfilePhotoStore –MySiteHostLocation $MySiteUrl write-host „Profile photo store update run – please check thumbnails are present in Profile Pictures folder.“ } catch { write-host „The script has stopped because there has been an error: „$_ } finally { #Dispose of site and web objects $mySiteHostWeb.Dispose() $mySiteHostSite.Dispose() } }
Die Anwendung des Skriptes ist sehr einfach und wird mittels Cmdlet bereitgestellt:
​Upload-PhotosToSP -LocalPath <Pfad zu den neuen Profilbildern> -MySiteUrl <URL des MySiteHosts>
Mittels der Option „Overwrite“ werden bereits vorhandene Profilbilder überschrieben. Beispiel am Testsystem:
​Upload-PhotosToSP -LocalPath „C:\ProfilePictures“ -MySiteUrl „http://l2dev2010/my“ -Overwrite
Es erscheint nun folgende Fehlermeldung: Schritt 10: Fehlermeldung System.ServiceModel.Security.SecurityAccessDeniedException Dem ausführendem Account fehlen noch die Rechte für die Durchführung des Powershell-Skripts. Diese Rechte können wir im User Profile Service verwalten: Schritt 11: Durchführung des PowerShell Skripts Schritt 11: Connection Permissions einrichten Schritt 12: Administrator festlegen Anhand dieser Screens ist einfach zu erkennen, wie die Benutzerrechte vergeben werden. Wichtig ist den Haken bei „Full Control“ zu aktivieren, nachdem man den Benutzer, hier der Administrator hinzugefügt hat. In vielen Foren wird oft darauf hingewiesen, dass der ausführende User ebenfalls unter den Administratoren aufgeführt werden muss. Sollte es sich bereits um einen Administrator-Account handeln, so ist das hinzufügen nicht nötig um das Powershell-Skript korrekt auszuführen. Der Vollständigkeit halber wird die Einrichtung des Benutzers als Administrator hier noch einmal gezeigt: Schritt 13: Ausführenden User als Administrator festlegen Schritt 14:Ausführenden User als Administrator festlegen Schritt 15: Ausführenden User als Administrator festlegen Nach Einrichtung der benötigten Rechte kann das Powershell-Skript nun korrekt ausgeführt werden und die Benutzerbilder werden korrekt hochgeladen. Hinweis: Der Dateiname der Benutzerbilder muss in einem bestimmten Format vorliegen:
​ <domain>_<username>
Im Anschluss kann das Powershell-Skript erfolgreich ausgeführt werden. Schritt 16: PowerShell Script ausführen   Quellen: 1: http://get-spscripts.com/2010/12/upload-multiple-user-profile.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.



Adresse

Layer 2 GmbH
Eiffestraße 664b
20537 Hamburg

Tel.: +49 (40) 28 41 12 - 10
Fax: +49 (40) 28 41 12 - 16
Mail: info@layer2.de

Folgen Sie uns!

LinkedInXingFacebookTwitter

Google +YouTubeRSS