SharePoint: How to schedule a User Profile Full Synchronization

There is a lot of confusion around SharePoint’s scheduled User Profile Synchronization.  Here is the current truth:  There is no out-of-the-box support for a scheduled full synchronization for SharePoint User Profile Services… only incremental synchronization.  Yes, we know… you can always manually perform a full synchronization from the Central Administration UI.  But where is the fun in that?

 

Here is how to schedule automatic execution of the User Profile Full Synchronization :

Conventions:
For the purpose of this blog entry, we will assume all scripts are located in a folder at C:\Scripts\.

 

STEP#1:  Get the name of your User Profile Synchronization Application

  1. Launch the Central Administration UI.
  2. Navigate to Manage Service Applications
  3. Note the name for the User Profile Service
    In the screenshot below, the name is “User Profile Service”.  Your install may vary
    image

 

STEP#2: Create the PowerShell script
Place the following text into the following file: C:\Scripts\UserProfileSync.PS1

Add-PsSnapin Microsoft.SharePoint.PowerShell
$UPS= Get-SPServiceApplication | where { $_.DisplayName -eq “[UPSName]”}
$UPS.StartImport($true)

Important: Be sure to replace [UPSName] with the name of your user profile service from step#1

STEP#3: Schedule the task

  1. Launch Task Scheduler from Administrative Tools
  2. Right click and select Create New Task
  3. Fill out the General tab
    Important: Verify Run whether user is logged on or not and Run with highest privileges are both checked
    image
  4. Configure the Triggers as appropriate for your organization
  5. Create an Action to be fired when triggered
    Important:  You must setup the Action to launch PowerShell and point to the script via the parameters field
    image
  6. Configure all other parameters as appropriate for your organization

 

That’s it!  Simple!

2 thoughts on “SharePoint: How to schedule a User Profile Full Synchronization

  1. admin

    Jonathan,
    The $true flags the StartImport() method to perform a full sync. This is executed outside of SharePoints timer jobs, so the status listed will not be accurate.

Leave a Reply

Your email address will not be published. Required fields are marked *