MOSS 2007用户配置文件属性:以编程方式访问AD中的“映射属性”

时间:2010-06-23 15:50:08

标签: sharepoint user-profile

如您所知,MOSS 2007提供了将Active Directory属性与SharePoint UserProfile属性同步的功能。您可以将AD属性映射到userProfile属性 共享服务>用户配置文件和属性>查看配置文件属性(一直在底部)。

我目前正在研究将userProfiles上的修改同步回AD的可能性。

我是SharePoint的新手,并且在我的API中苦苦挣扎,但到目前为止我所挖掘的是,您可以迭代到UserProfile更改并找出时间戳,旧值,新值等。

    string siteUrl = @"http://[siteUrl]/";
    Microsoft.SharePoint.SPSite spsite = new Microsoft.SharePoint.SPSite(url);
    Microsoft.Office.Server.ServerContext serverContext = Microsoft.Office.Server.ServerContext.GetContext(spsite);
    Microsoft.Office.Server.UserProfiles.UserProfileManager userProfileMgr = new Microsoft.Office.Server.UserProfiles.UserProfileManager(serverContext);
    var collection = userProfileMgr.GetChanges();

    List<ProfilePropertyChange> changes = new List<ProfilePropertyChange>();
    foreach (Microsoft.Office.Server.UserProfiles.UserProfileChange change in collection)
    {
        if (change.ObjectType == Microsoft.Office.Server.UserProfiles.ObjectTypes.SingleValueProperty)
        {
            var singleValue = change as Microsoft.Office.Server.UserProfiles.UserProfileSingleValueChange;

        string oldValue = singleValue.OldValue;
        string newValue = singleValue.NewValue;
        var profileProperty = singleValue.ProfileProperty;
        DateTime modificationDate = singleValue.EventTime;

        ...

        }
    }

但是,我目前无法发现的是以编程方式访问所谓的“映射属性”(AD中的原始属性名称)。

有人能指出我将为我揭示这些信息的SharePoint API吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

Steve Curran非常友好地在MSDN论坛上提出我的问题:

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/019c1e60-babb-4942-90e1-d33e924c7c73

  

使用PropertyMapCollection你   也许能够查找映射的AD   给定Userprofile名称的属性。

     

DataSource ds = upcm.GetDataSource();   PropertyMapCollection pmc =   ds.PropertyMapping;

     

http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.propertymapcollection%28office.12%29.aspx