If you have recreated the whole service application for User Profiles, did you rebind the User Profile Property PictureURL
to the AD property thumbnailPhoto
? I have made the mistake to miss this one in the past.
I found a great step by step guide here that outlines these three steps:
- Create an import PictureURL mapping
- Perform a full profile synchronization
- Run the Update-SPProfilePhotoStore PowerShell command
After updated info about not using AD to sync pictures
Have you checked out this post?
http://blog.bugrapostaci.com/2012/07/23/after-restoring-sharepoint-profile-databases-some-of-users-pictures-are-not-shown/
Basically a script similar to this (from the link):
Param (
[parameter(Mandatory=$true)][string]$MySiteUrl,
[parameter(Mandatory=$false)][Switch]$Update
)
$mySiteHostSite = Get-SPSite $MySiteUrl
$mySiteHostWeb = $mySiteHostSite.OpenWeb()
$context = Get-SPServiceContext $mySiteHostSite
$spPhotosFolder = $mySiteHostWeb.GetFolder("User Photos")
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$AllProfiles = $ProfileManager.GetEnumerator()
foreach($profile in $AllProfiles)
{
$AccountName= $profile[[Microsoft.Office.Server.UserProfiles.PropertyConstants]::AccountName].Value
if($profile["PictureURL"].Value -eq $null -or $profile["PictureURL"].Value -eq $null )
{
$checkUrl =$spPhotosFolder.url +"/" + "Profile Pictures" + "/" + $AccountName.Replace("\","_") + "_MThumb.jpg"
if($mySiteHostWeb.GetFile($checkURL).Exists)
{
if($Update)
{
$profile["PictureURL"].Value = $mySiteHostWeb.Url + "/" + $checkurl
$profile.Commit()
"Updated!!! " + $AccountName
$mySiteHostWeb.Url + "/" + $checkurl
}
else
{
"Updatable!!! " + $AccountName
}
}
else
{
"Missing !!! " + $AccountName
}
}
else
{
"OK! " + $AccountName + " " + $profile["PictureURL"].Value
}
}
$mySiteHostWeb.Dispose()
$mySiteHostSite.Dispose()
but please see the post for details about what you need to modify for your environment (like "User Photos" folder)