zoukankan      html  css  js  c++  java
  • 获取 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的增删改查操作。

  • 相关阅读:
    文本域光标操作(选、添、删、取)的jQuery扩展
    jQuery插件,将内容插入到光标处
    onmouseout,mouseover经过子元素也触发的问题解决方案
    【M4】非必要不提供default 构造方法
    【M3】绝对不要以多态方式处理数组
    100亿个数字找出最大的10个
    【M2】最好使用C++转型操作符
    【M26】限制某个class所能产生的对象数量
    理解extern
    变量的属性
  • 原文地址:https://www.cnblogs.com/mingmingruyuedlut/p/2267932.html
Copyright © 2011-2022 走看看