Set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell


In this article we will be seeing how to Set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell.

Introduction:

Microsoft SharePoint Server 2010 enables you to set privacy policies on user profile properties.

The Default Privacy policy limits the visibility of properties, users' My Documents, and other My Site content to:

Member name

Description

Public

Privacy level gives visibility of users' profile properties, and other My Site content, to everyone.

Contacts

Privacy level limits the visibility of users' profile properties, and other My Site content, to my colleagues.

Organization

Privacy level limits the visibility of users' profile properties, and other My Site content, to my workgroup.

Manager

Privacy level limits the visibility of users' profile properties, and other My Site content, to my manager and me.

Private

Privacy level limits the visibility of users' profile properties, and other My Site content, to me only.

NotSet

Privacy level is not set.

Note: For more information on PrivacyPolicy Enumeration please refer http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.privacypolicy.aspx.

Set Privacy Policies for User Profile Properties in SharePoint 2010

We can set Privacy Policies for User Profile Properties in SharePoint 2010 from Central Administration.

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

PrvcyPlcShare1.gif

Click on Manage User Properties

Set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell

Select the property and then click on Edit to modify the property.

Set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell


Automation: Set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell

Here we will be seeing how to set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell.

Steps Involved:

  1. Create the input XML file which contains the inputs for setting Privacy Policies.
  2. Create ps1 file which contains the script for setting Privacy Policies.

SetPrivacyPolicies.xml

<?xml version="1.0" encoding="utf-8" ?>
  <PrivacyPolicies>
    <
URL>http://serverName06:8080/</URL>
    <Property Name="Sample1" Privacy="Contacts" PrivacyPolicy="mandatory"></Property>
    <Property Name="Sample2" Privacy="Public" PrivacyPolicy="disabled"></Property>
    <Property Name="Sample3" Privacy="Manager" PrivacyPolicy="OptIn"></Property
  </PrivacyPolicies>


SetPrivacyPolicies.ps1


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

 [xml]$xmlData=Get-Content "C:\Users\Desktop\ContentSources\SetPrivacyPolicies.xml"

 #----------------Set Privacy Policies for User Profile properties---------------------------------------------
function SetPrivacyPolicies()
{

      $site = Get-SPSite $xmlData.PrivacyPolicies.URL
     
$context = Get-SPServiceContext($site)
     
$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.PrivacyPolicies.Property | ForEach-Object{
           
$property = $pspm.GetPropertyByName($_.Name)
           
if($property -ne $null)
            {
                 
$Privacy=$_.Privacy
                 
$PrivacyPolicy=$_.PrivacyPolicy                
                 
$property.DefaultPrivacy = [Microsoft.Office.Server.UserProfiles.Privacy]::$Privacy
                  $property.PrivacyPolicy = [Microsoft.Office.Server.UserProfiles.PrivacyPolicy]::$PrivacyPolicy               
       
                 
$property.Commit()
                 
write-host -f green $_.Name property privacy policies are modified successfully
            }
           
else
            {
              
write-host -f yellow $_.Name property does not exists
            }
      }
}

#----------------Calling the function---------------------------------------------

 SetPrivacyPolicies

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\SetPrivacyPolicies.ps1

Output:

Set Privacy Policies for User Profile Properties in SharePoint 2010 using PowerShell

And in the Central Administration you could see the Privacy Policy Settings modified for User Profile properties.