How to change user profile properties with PowerShell
I had an interesting little challenge crop up the other day that required me to need to change a custom user profile property inside of SharePoint’s 2010 User Profile Service Application. I have thousands of profiles and certainly didn’t want to get comfy with the mouse and keyboard all day, so I decided to whip up a little script to do the dirty work for me. Hopefully someone will find this useful as I couldn’t find it already put together.
#Add-PSSnapin Microsoft.Sharepoint.Powershell
[reflection.assembly]::LoadWithPartialName("Microsoft.SharePoint") | out-null
[reflection.assembly]::LoadWithPartialName("Microsoft.Office.Server") | out-null
[reflection.assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles") | out-null
$site = "https://sp2010dev"
$property = "Title"
$value = "TestValue123"
$spsite = Get-SPSite $site
$context = Get-SPServiceContext $site
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$enum = $upm.GetEnumerator()
while ($enum.MoveNext())
{
[Microsoft.Office.Server.UserProfiles.UserProfile] $user = $enum.Current
Write-Host "Working on profile for: " $user.DisplayName
Write-Host "Old Value: " $($user[$property])
$user[$property].value = $value
$user.Commit()
Write-Host "New Value: " $($user[$property])
}