获取 SharePoint 2010 中所有的User Profile Service Application

  SharePoint中每一类Service都有一个唯一的Guid进行相应的标识,并且其下的Application会继承这个Guid,名曰:ApplicationClassId。因此,可以根据ApplicationClassId去确认Application属于哪一类Service。例如User Profile Service下所有的Application的ApplicationClassId都为:e12223eb-f793-4e73-9f5b-3bfcc06ed092。

  其他的ApplicationClassId也可以用编程的方式获得:

            //遍历所有的service
            foreach (SPService service in SPFarm.Local.Services)
            {
                //遍历该service下所有的application
                foreach (SPServiceApplication app in service.Applications)
                {
                    //app.ApplicationClassId
                }
            }

  因此可以用去比较此Application的ApplicationClassId,以确定此Application是否属于User Profile Service。

  

  不过还有另外一种方式:先确定Service的类别,然后直接遍历该Service下所有的Application

  具体步骤:在确保开启User Profile Service的情况下,可以通过SPFarm.Local.Services获取所有的Service,然后对所有的Service进行遍历,当获取到User Profile Service时,可以对该Service下的所有Application进行遍历。

请看如下代码:

    public Dictionary<string, Guid> GetUserProfile()
    {
        Dictionary<string, Guid> userProfileApps = new Dictionary<string, Guid>();
        try
        {
            //遍历所有的service
            foreach (SPService service in SPFarm.Local.Services)
            {
                if (service.TypeName.Equals("User Profile Service", StringComparison.OrdinalIgnoreCase))
                {
                    //遍历该service下所有的application
                    foreach (SPServiceApplication app in service.Applications)
                    {
                        //当前farm下面可用的UserProfile Service Application
                        userProfileApps.Add(app.DisplayName, app.ID);
                    }
                }
            }

        }
        catch (Exception ex)
        {
            Logger.Error("Error occurred while get user profile, error message: {0}", ex.ToString());
        }
        return userProfileApps;
    }

当然想要遍历其他Service,只需要在代码中修改service 的 TypeName。

 

为了获取 SharePoint 2010 中所有service TypeName的信息,可以进行如下三步走:

  1. farm administrator登录到SharePoint 2010的server中
  2. 打开 SharePoint 2010 Management Shell
  3. 输入此命令行: Get-SPServiceInstance

这个命令行将会显示所有service instance的 status 和 id :

 

定位好了User Profile Service Application后,便可以获取此Application下的所有User Profile信息,完成所谓的User Profile的增删改查操作。

 

posted @ 2013-06-14 15:11  Eric Sun  阅读(1085)  评论(0)    收藏  举报