从 SharePoint 2010 获取场功能

Posted

技术标签:

【中文标题】从 SharePoint 2010 获取场功能【英文标题】:Get Farm Features from SharePoint 2010 【发布时间】:2012-10-11 15:19:15 【问题描述】:

我正在尝试从 SharePoint 2010 管理中心网站获取场功能列表。我遇到的问题是我只成功撤回了 Site 功能。以下代码是我目前正在使用的代码:

foreach (SPFeature feature in SPAdministrationWebApplication.Local.Features)

    string featureName = feature.Definition.DisplayName;
    if (featureName != null)
    
        XElement newItem = new XElement("Item", featureName);
        infoTree.Add(newItem);
    


我也试过使用SPFarm.Local.FeatureDefinitions,如下:

foreach (SPFeatureDefinition feature in SPFarm.Local.FeatureDefinitions)

    string featureName = feature.DisplayName;
if (featureName != null)
    
        XElement newItem = new XElement("Item", featureName);
        infoTree.Add(newItem);
    

但无济于事。我正在接近的下一条途径是使用SPFeatureCollection。有没有更好的方法可以解决这个问题?基本上我只是在寻找一些线索,因为我还没有从SPFeatureCollection 得到任何东西。

编辑 我一直在玩弄

SPFeatureCollection featureCollect = SPContext.Current.Site.Features  

但到目前为止,我遇到了 SPContext 返回 null 的问题。

【问题讨论】:

我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。 抱歉,我通常用它来启动 Google 查询。非故意违规 没问题。 Stack Overflow 将第一个标签放入标题中。 【参考方案1】:

我认为你在第二个例子中是正确的。您缺少的部分是检查功能范围。 SPFarm.Local.FeatureDefinitions 将带回农场中定义的所有特征的集合(SPFeatureDefinition 对象的集合)。从那里,您可以检查 SPFeatureDefinition 对象的 Scope 属性,以将其缩小到仅农场范围的功能。

例子:

foreach (SPFeatureDefinition feature in SPFarm.Local.FeatureDefinitions)

    if (feature.Scope = "Farm")
    
        string featureName = feature.DisplayName;
        if (featureName != null)
        
            XElement newItem = new XElement("Item", featureName);
            infoTree.Add(newItem);
        
    

关于 SPFeatureDefinition 对象的可用属性的其他 MSDN 参考 here。

【讨论】:

啊,是的,我完全忘了查看 Scope 设置。感谢您的建议/示例。我会开始玩这个! 范围确实是答案!它不喜欢features.Scope = "Farm",而是在 if 之前声明一个范围,然后比较:features.Scope.Equals(scopeSelect) 成功了。感谢您的帮助。 对我的语法错误感到抱歉。我在仔细检查时使用了 PowerShell 脚本。该脚本如下所示: $farm = get-spfarm; foreach ($feature in $farm.FeatureDefinitions) if ($feature.Scope -eq "Farm") write-host $feature.name $feature.FeatureDefinitionScope 很高兴这对你有用! 没问题!它让我不再只是复制/粘贴,我学到了更多。

以上是关于从 SharePoint 2010 获取场功能的主要内容,如果未能解决你的问题,请参考以下文章

powershell 从SharePoint场下载所有SharePoint wsp解决方案。

CSS sharepoint 2010如何在功能区隐藏时从功能区区域移除高度

怎么获取sharepoint的版本

Powershell从SharePoint文档库中删除文件

SharePoint 2010 WebPart 个性化布局

VS2015 中的 SharePoint 2016 模板