Create User Profile Section in SharePoint 2010 using PowerShell


Create User Profile Section in SharePoint 2010

We can to create new custom section for User Profile in SharePoint 2010 from Central Administration.

Go to Central Administration - Application Management - Manage Service Applications - User Profile Service Application.

sharepoint 2010

Click on Manage User Properties

User Properties in sharepoint

Click on New Section link to create a new section for user profiles.

user profiles in sharepoint

sharepoint user profiles

Automation:  Create User Profile Section in SharePoint 2010 using PowerShell

Here we will be seeing how to create new section for User Profile in SharePoint 2010 using PowerShell.

Steps Involved:

  1. Create the input XML file which contains the inputs for creating User Profile Section.

  2. Create ps1 file which contains the script for creating User Profile Section.

CreateUserProfileSection.xml

<?xml version="1.0" encoding="utf-8" ?>
<
UserProfileSection>
  <
SiteURL>http://serverName:8080/</SiteURL>
  <
Section Name="CustomSection11" DisplayName="CustomSection11" ></Section>
  <
Section Name="CustomSection22" DisplayName="CustomSection22" ></Section>
  <
Section Name="CustomSection33" DisplayName="CustomSection33" ></Section>
  <
Section Name="CustomSection44" DisplayName="CustomSection44" ></Section>
</
UserProfileSection>

CreateUserProfileSection.ps1

 #----------------Get the xml file---------------------------------------------------------------

  [xml]$xmlData=Get-Content "C:\Users\Desktop\ContentSources\CreateUserProfileSection.xml" 
 
 
#----------------Create new custom User Profile section---------------------------------------------
function CreateUserProfileSection()
{    
     
$site = Get-SPSite $xmlData.UserProfileSection.SiteURL
     
$context = Get-SPServiceContext($site)
     
$upcm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager($context);     
     
$ppm = $upcm.ProfilePropertyManager
     
$cpm = $ppm.GetCoreProperties()
     
$ptpm = $ppm.GetProfileTypeProperties([Microsoft.Office.Server.UserProfiles.ProfileType]::User)
     
$psm = [Microsoft.Office.Server.UserProfiles.ProfileSubTypeManager]::Get($context)
     
$ps = $psm.GetProfileSubtype([Microsoft.Office.Server.UserProfiles.
ProfileSubtypeManager]::GetDefaultProfileName
[Microsoft.Office.Server.UserProfiles.ProfileType]::User))

      $pspm = $ps.Properties
     
$xmlData.UserProfileSection.Section | ForEach-Object{
         
$property = $pspm.GetSectionByName($_.Name)            
           
if($property -eq $null)
            {
               
$Privacy=$_.Privacy
                 
$PrivacyPolicy=$_.PrivacyPolicy
               
$coreProp = $cpm.Create($true)
               
$coreProp.Name = $_.Name
               
$coreProp.DisplayName = $_.DisplayName
               
$cpm.Add($coreProp)
                 
write-host -f green $_.Name section is created successfully            
            }
           
else
            {
              
write-host -f yellow $_.Name section already exists
            }
      }
}
 
#----------------Calling the function---------------------------------------------  
 
CreateUserProfileSection

Run the Script:

  1. Go to Start.

  2. Click on All Programs.

  3. Click on Microsoft SharePoint 2010 Products and then click on SharePoint 2010 Management Shell.

  4. Run the C:\Users\Desktop\ContentSources\CreateUserProfileSection.ps1

Output:

sharepoint eith powershell

And in the Central Administration you could see the newly created custom sections for user profiles.

sharepoint user profiles