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的增删改查操作。

  • 相关阅读:
    补 七月九日学习报告
    七月八日学习报告
    学习笔记164—层次聚类 Hierarchical Clustering
    学习笔记163—理解模型正则化:L1正则、L2正则(理论+代码)
    学习笔记162—Linear Regression vs Logistic Regression
    学习笔记161—win7C盘 虚拟内存移动到D盘或其他盘符
    学习笔记160—文献引文分析利器 HistCite 详细使用教程
    学习笔记159—电脑word文档回车表格随文字移动
    学习笔记158—INTRODUCTION TO LINEAR MIXED MODELS
    学习笔记157—Nipype的安装
  • 原文地址:https://www.cnblogs.com/mingmingruyuedlut/p/2267932.html
Copyright © 2011-2022 走看看