Sind die Profilbilder der Benutzer im Active Directory hinterlegt, so werden diese automatisch auf der jeweiligen MySite eines Benutzers angezeigt. Wurden im Active Directory keine Profilbilder hinterlegt, so können diese entweder durch jeden Benutzer selbst hochgeladen werden oder durch einen IT Pro mittels Script vom Fileshare importiert und den jeweiligen Usern zugeordnet. Dieser Blogpost beschäftigt sich mit letzterem.

Erstellen Sie eine neue Document Library. Wählen Sie „none“ als Standarddateiformat. Navigieren Sie in der neu erstellten Library zu Library Tools > Library und klicken Sie dort Open with Explorer. Kopieren Sie alle zu importierenden MySites Bilder vom Fileshare in das neu geöffnete Windows Explorer Fenster.

Sobald alle Profilbilder hochgeladen wurden, klicken Sie auf Export to Excel, um eine Liste aller Dateinamen der Bilder zu erhalten.

Erstellen Sie ein neues Excel Dokument, nennen Sie die erste Spalte emp_id und die zweite Spalte domain_user_name

Kopieren Sie alle Dateinamen aus der zuvor exportierten Exceldatei und fügen Sie diese im neu erstellten Dokument in den beiden Spalten (emp_id und domain_user_name) ein.
Markieren Sie die Spalte domain_user_name und entfernen Sie mittels Suchen & Ersetzen alle Dateinamen (wichtig für die Zuordnung Bildname = Username).

Nun müssen die Dateinamen noch die vollständige URL erhalten, damit das Script diese auslesen kann. Gehen Sie dazu nochmals in die SharePoint Library und kopieren Sie den Pfad einer Datei.

Fügen Sie diesen in der Excel Tabelle vor die bereits vorhandenen Dateinamen in der Spalte emp_id. Dies kann beispielsweise mit dem Befehl Concantenate realisiert werden.

Speichern Sie die Datei als CSV (Comma delimited) import.csv ab. Öffnen Sie die Datei mit Notepad und stellen Sie sicher, dass diese so aussieht:

Ersetzen Sie mittels Suchen & Ersetzen alle Semikolon durch ein Komma.

Speichern Sie die Datei.

Erstellen Sie eine neue Textdatei und kopieren Sie den nachstehenden Code hinein:

[void][system.reflection.assembly]::loadwithpartialname("Microsoft.Office.Server.UserProfiles")
$csvFile = "D:\import.csv"
$MySiteUrl = "http://IHRE-MYSITES-URL"
$site = Get-SPSite $MySiteUrl
write-host -ForegroundColor Green "get site"
if ($site -ne $null)
{
$context = Get-SPServiceContext $site
write-host -ForegroundColor Green "Get Context"
if ($context -ne $null)
{
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
write-host -ForegroundColor Green "Get ProfileManager"
$csv = import-csv -path $csvFile
write-host -ForegroundColor Green "Get CSV"
if ($profileManager -ne $null)
{
foreach ($line in $csv)
{
$user_name = "DOMAIN\" + $line.domain_user_name
write-host -ForegroundColor Green "Get " + $user_name
$up = $profileManager.GetUserProfile($user_name)
write-host -ForegroundColor Green "Get UserProfile - Done"
if($up)
{
$up["PictureURL"].Value = $line.emp_id
$up.Commit()
write-host $user_name,"--->",$up.DisplayName,"--->",$line.emp_id
$up = $null
}
}
}
}
}

Speichern Sie die Datei als import.ps1. Passen Sie die rot markierten Zeilen an und hinterlegen Sie die entsprechenden Werte Ihrer Umgebung:
$csvFile = Pfad zur CSV Datei

$MySiteUrl = Pfad zur Ihrer MySite
$user_name = „DOMAIN\“ + … = Domäne

Speichern Sie die Datei und führen Sie diese mit dem Benutzer aus, der für die User Profile Service Application hinterlegt ist.
Wenn der Import ohne Fehler durchgelaufen ist führen Sie anschliessend ihn der SharePoint 2010 Management Shell folgenden Befehl aus, um die Bilder auf die richtige Grösse zuschneiden zu lassen:
Update-SPProfilePhotoStore -MySiteHostLocation http://IHRE-MYSITES-URL

 

Leider ging im Eifer des Gefechts der Name des Autors, welcher den obigen Code geschrieben hat, verloren. Falls Sie der Autor dieses Import Scripts sind, bitte ich Sie, mir über das Kontaktformular eine Nachricht mit dem Link zum Originalbeitrag zu senden, damit ich auf Ihren Blog verweisen kann. Besten Dank.