Here is a small PowerShell script to fix the pictureurl for all userprofiles after changing the mySite Url:
[code]
$mySiteWebapplicationUrl = "https://mysite.normanbauer.com/"
#current Url of your mySite website
$mySiteOldUrlValue = "http://mysitetest:80/"
#former Url where your pictures do not reside any more
$mySiteNewUrlValue = "https://mysite.normanbauer.com:443/"
#current Url where your images can be found now
$mySite = Get-SPSite $mySiteWebapplicationUrl
$SPServiceContext = Get-SPServiceContext $mySite
$userProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($SPServiceContext)
$userProfiles = $userProfileManager.GetEnumerator()
foreach ($userProfile in $userProfiles)
{
#if pictureurl is not empty replace the old url part with the new one
if ($userProfile["PictureURL"] -ne ”)
{
$oldPictureUrl = $userProfile["PictureURL"].toString()
$newPictureUrl = $oldPictureUrl -Replace $mySiteOldUrlValue, $mySiteNewUrlValue
write-host "oldPictureUrl = " $oldPictureUrl " –> newPictureUrl = " $newPictureUrl
$userProfile["PictureURL"].Value = $newPictureUrl
$userProfile.Commit()
}
}
[/code]
Hey,
Awesome script really saved me!! I just had to fix one minor thing:
$userProfiles = $profileManager.GetEnumerator()
This line should actually be:
$userProfiles = $userprofileManager.GetEnumerator()
As that is the variable created by the previous statement.
Thanks,
Andreas
Oh thanks. I fixed that one.
Hi,
I’ve just changed the URL of the My Site, and I’m having a bit of issues with this script, since I’m a complete newbie to Powershell.
When trying to run the script I’m getting prompted for TypeName, could you tell me what I’m doing wrong here? Thanks!
Thanks a lot for this script, saved me heaps of trouble!
In regards to the comment above, I was getting some errors due to the fact that I wasn’t running the script as a user with permissions to change the MySite.
@Peter
You’re welcome… At least I did not mention that you better run this script in a Powershell elevated by a farm administrator. Thanks for the hint on that.
I was having trouble changing my URL from http://portal/my/ to http://portal/ – The script ran fine, but the old and new URLS were the same. I changed this line:
$newPictureUrl = $oldPictureUrl.Replace($mySiteOldUrlValue, $mySiteNewUrlValue)
to
$newPictureUrl = $oldPictureUrl -Replace($mySiteOldUrlValue, $mySiteNewUrlValue)
and everything worked.
I have run this script and it completes without errors, but I noticed the path for some of the photos is:
oldPictureUrl = https://mysite.companyname.net/user photos/profile picturesUser Photos/Profile Pictures/me_MThumb.jpg –> newPictureUrl = https://mysite.companyname.net/user photos/profile picturesUser Photos/Profile Pictures/me_MThumb.jpg
Any ideas how I can correct the duplicate path? If I manually remove the duplicate user photos/profile pictures (so that there is only 1 in the path) then it displays the picture in the browser.
Any help would be greatly appreciated.
@Duane Alleman
You could simply edit the script not to replace old vs. new url but replace that “double” url:
[code]
$newPictureUrl = $oldPictureUrl -Replace "user photos/profile picturesUser Photos/Profile Pictures", "user photos/profile pictures"
[/code]
@Jonathon McDougall
Thanks for the hint, I changed that.