2014-09-04

One of our customer requested to get user profile information report from SharePoint 2010 mysite. One of the department needs to present a statistics report and to manipulate the few fields as per their requirement.

Requirement

  • Get all the users profile information in CSV file for easy manipulations.
  • Include all custom fields.
  • The report needs to be delivered every month.

Considerations

  • Please collect the internal names of the user profile property.
  • Do test in acceptance environment before executing in production.
  • Do confirm UPA and UPS are running as expected.
  • Execute the script as Farm Administrator.

PowerShell Code

# ----------------------------------------------------------------------------- 
# Script : To Export User Profile Information Value in Excel and HTML 
# Author : Chendrayan Venkatesan 
# Contact : Chendrayan.Exchange@hotmail.com
# Date : October 26 2012 
# Version : 1.0 
# ----------------------------------------------------------------------------- 
 
 
#. Use Internal name of the user profile property. 
#. Any custom user fields will have "SPS-". 
#. Remove comment "#" in line 43 and do the same in line 48 if you need HTML output. 
#. Provide location after out-file to save the HTML file. 
#. In Line 59 use the same location as Out-File. 
#. Append if you have any custom fields in mysite user profile property 
#. For HTML look and feel please copy and paste the style.css in C:\. 
#. Use any style.css as per organization standard and policy. 
 
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 
 
$siteUrl = "Your Mysite Host Name" 
$outputFile = "Save the Output File in your desired Location" 
 
$serviceContext = Get-SPServiceContext -Site $siteUrl 
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($serviceContext); 
$profiles = $profileManager.GetEnumerator() 
 
$collection = @() 
foreach ($profile in $profiles) { 
  
   $profileData = "" |  
   select "AccountName", "PreferredName" , "Department" , "Manager" , "Office" , "Location" , "WorkEmail" , "Assistant" , "AboutMe" , "Language" , "PictureURL" , "Role" 
    
   $profileData.AccountName = $profile["AccountName"] 
   $profileData.PreferredName = $profile["PreferredName"] 
   $profileData.Manager = $profile["Manager"] 
   $profileData.Department = $profile["Department"] 
   $profileData.Office = $profile["Office"] 
   $profileData.Location = $profile["Location"] 
   $profileData.WorkEmail = $profile["WorkEmail"] 
   $profileData.Assistant = $profile["Assistant"] 
   $profileData.AboutMe = $profile["AboutMe"].Value 
   $profileData.Language = $profile["Language"] 
   $profileData.PictureURL = $profile["PictureURL"] 
   $profileData.Role = $profile["Role"] 
    
   #$collection += $profileData | ConvertTo-Html -Fragment 
   $collection += $profileData 
} 
 
#ConvertTo-Html -Body "$collection" -CssUri C:\style.CSS | Out-File "Location to save" 
 
$collection | Export-Csv $outputFile -NoTypeInformation 
 
#Send Mail to Box for easy access 
$SMTP = "Name of the SMTP Server" 
$From = "Email Address" 
$To = "Email Address" , "Email Address" 
$Subject = "User Profile Information Report" 
Send-MailMessage -From $From -To $To -SmtpServer $SMTP -Subject $Subject -Attachments "Same as Out-File Location"

 

Download Code

Export SharePoint User Profile Information values in CSV or HTML

About the author 

Chendrayan