Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
#Load SharePoint User Profile assemblies
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles")
#Function to get service context
function Get-SPServiceContext([Microsoft.SharePoint.Administration.SPServiceApplication]
$profileApp)
{
$profileApp = @(Get-SPServiceApplication | ?
{$_.TypeName -eq "User Profile Service Application"})[0]
return [Microsoft.SharePoint.SPServiceContext]::GetContext
($profileApp.ServiceApplicationProxyGroup,
[Microsoft.SharePoint.SPSiteSubscriptionIdentifier]::Default)
}
#Get UserProfileManager
$serviceContext = Get-SPServiceContext
$userProfileConfigManager = New-Object Microsoft.Office.Server.UserProfiles.
UserProfileConfigManager($serviceContext)
$userProfilePropertyManager = $userProfileConfigManager.ProfilePropertyManager
$userProfilePropertyManager = $userProfilePropertyManager.GetCoreProperties()
$userProfileTypeProperties = $userProfilePropertyManager.GetProfileTypeProperties
([Microsoft.Office.Server.UserProfiles.ProfileType]::User)
$userProfileSubTypeManager = [Microsoft.Office.Server.UserProfiles.
ProfileSubTypeManager]::Get($serviceContext)
$userProfile = $userProfileSubTypeManager.GetProfileSubtype
([Microsoft.Office.Server.UserProfiles.ProfileSubtypeManager]::GetDefaultProfileName
([Microsoft.Office.Server.UserProfiles.ProfileType]::User))
$userProfileProperties = $userProfile.Properties
#Set Custom Property values
$PropertyName = "MyProperty"
$PropertyDisplayName = "MyCustomProperty"
$Privacy="private"
$PrivacyPolicy="mandatory"
$coreProperty = $userProfilePropertyManager.Create($false)
$coreProperty.Name = $PropertyName
$coreProperty.DisplayName = $PropertyDisplayName
$coreProperty.Type = "string"
$coreProperty.Length = "50"
#Add Custom Property
$userProfilePropertyManager.Add($coreProperty)
$profileTypeProperty = $userProfileTypeProperties.Create($coreProperty)
#Display Settings
#Show on the Edit Details page
$profileTypeProperty.IsVisibleOnEditor = $true
#Show in the profile properties section of the user's profile page
$profileTypeProperty.IsVisibleOnViewer = $true
#Show updates to the property in newsfeed
$profileTypeProperty.IsEventLog = $true
$userProfileTypeProperties.Add($profileTypeProperty)
$profileSubTypeProperty = $userProfileProperties.Create($profileTypeProperty)
$profileSubTypeProperty.DefaultPrivacy =[Microsoft.Office.Server.UserProfiles.Privacy]
::$Privacy
$profileSubTypeProperty.PrivacyPolicy =
[Microsoft.Office.Server.UserProfiles.PrivacyPolicy]::$PrivacyPolicy
$userProfileProperties.Add($profileSubTypeProperty)
#Add New Mapping for synchronization user profile data
#SharePoint Synchronization connection
$connectionName ="connectionname"
#Attribute name in FIM/LDAP source
$attributeName ="attributename"
$synchConnection = $userProfileConfigManager.ConnectionManager[$connectionName]
$synchConnection.PropertyMapping.AddNewMapping
([Microsoft.Office.Server.UserProfiles.ProfileType]::User,$PropertyName,$attributeName)
Privacy is an Enum, which has these values,
Privacy Member Name |
Description |
Public |
Everyone |
Contacts |
Colleagues |
Organization |
Workgroup |
Manager |
Manager and me |
Private |
Me |
NotSet |
Not set |
PrivacyPolicy is an Enum, which has these values,
Privacy Policy Name |
Description |
Mandatory |
Makes it a requirement that the user fill in a value. |
OptIn |
Opt-in to provide a privacy policy value for a property. |
OptOut |
Opt-out from providing a privacy policy value for a property. |
Disabled |
Turns off the feature and hides all related user interface |
Setting Core Properties - https://msdn.microsoft.com/en-us/library/ee578663.aspx
Add New Mapping - https://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.propertymapcollection.addnewmapping.aspx
Comments
Anonymous
September 17, 2011
Feel free to post this on the Microsoft ScriptCenter Repository so that others can find it easily.gallery.technet.microsoft.com/scriptcenterAnonymous
July 08, 2014
$profileTypeProperty = $userProfileTypeProperties.Create($coreProperty) throwing null object error on SP 2013.Anonymous
July 08, 2014
Exception Message:You cannot call a method on a null-valued expression.At E:SudarshanUser ProfileMoodys_UPA_CustomeProperties.ps1:57 char:1$profileTypeProperty = $userProfileTypeProperties.Create($coreProperty)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNullAnonymous
July 08, 2014
RESOLVED ALL THE ISSUES EXCEPT:Return zero connection //$userProfileConfigManager.ConnectionManager.count is zero$synchConnection = $userProfileConfigManager.ConnectionManager[$connectionName]