Powershell script to rename files for use as SharePoint 2010 User Profile thumbnails
User profile photos have changed in SharePoint 2010 in that they are now stored in a single image library in the MySite Host root site collection. They have also changed in that when you change the profile photo, SharePoint takes the file and creates three new images at specific sizes, then discards the file you gave it. These files have specific names to link them to the user account and come in small, medium and large flavours.
We’ve just delivered a solution to a customer that involved heavy customisation of the Profile page for users. This also involved replacing the large thumbnail version of the profile picture with one which met our size requirements.
The customer had a large group of image files all named in the pattern
Enter Powershell, stage left. The script below is a little rough and ready but works great. It gets a directory listing, splits the filename and then looks up in AD to see if there’s a user that matches the filename (sans extension). If it finds a match it renames the file to match the pattern
As I said, it’s a little rough and ready but I place here for the greater good. You need the ActiveDirectory powershell module to use this. It’s available on Server 2008 and above, and Windows 7 if you install the remote management tools.
The Active Directory Powershell Blog is a great resource for this stuff!
#import-module ActiveDirectory if (-not (get-module -name activedirectory)) { write-host "This script requires the ActiveDirectory powershell modules to run" exit } $domain="mydomain" $filesuffix = "LThumb" $files = get-childitem foreach ($file in $files) { $filesplit = $file.Name.split(".") $fullname = $filesplit[0] $fileext = $filesplit[1] write-host "Searching for:" $fullname $user = get-aduser -Filter { Name -eq $fullname } if ($user.SamAccountName -eq $Null) { write-host "Not Found!" } else { $newfilename = $domain+"_"+$user.SamAccountName+"_"+$filesuffix+"."+$fileext write-host "Renaming:" $file.name "New name:" $newfilename rename-item $file.Name $newfilename } }