В SharePoint 2010 есть возможности (Feature) активация которых на разных уровнях приводит к появлению или сокрытию отдельных компонентов, добавлению функциональности. Например, появление веб частей в каталоге, новых шаблонов и списков, рабочих процессов, пунктов меню, кнопок на ленте и т.д.

Всего есть 4 уровня, на которых работают возможности:

  1. Ферма - Farm,
  2. Веб приложение - WebApplication,
  3. Семейство сайтов - Site,
  4. Сайт - Web

В SharePoint по умолчанию существует более 250 возможностей. Каждая привязана к одному из уровней. Физически описание возможностей представляет из себя папку с файлом feature.xml и вспомогательными директориями и файлами. Все эти файлы располагаются в директории 14/template/features.

 

При помощи PowerShell Вы можете легко получить доступ к информации о возможностях. Это особенно актуально, когда их нужно включать массово на разных сайтах.

Команда Get-SPFeature выводит список всех возможностей. Примерно так:

DisplayName Id Scope

----------- -- -----

PublishingStapling 001f4bd7-746d-403b-aa09-a6cc43de7942 Farm

BasicWebParts 00bfea71-1c5e-4a24-b310-ba51c3eb7a57 Site

XmlFormLibrary 00bfea71-1e1d-4562-b56a-f05371bb0115 Web

Однако, из этого списка не очень понятно, что делать дальше.

Можно отфильтровать их по названию и/или уровню:

Get-SPFeature | ? {($_.Scope -eq "Site") -and ($_.DisplayName -like "pub*")}

 

Но где же русские имена? Есть возможность их получить из ресурсных файлов. Нужно получить культуру и добавить в вывод еще одну колонку:

$ci = [System.Globalization.CultureInfo]::CreateSpecificCulture("ru-ru")

Get-SPFeature | ? {($_.Scope -eq "Site") -and ($_.DisplayName -like "pub*")} | select -property DisplayName, @{Name="Title"; Expression = {$_.GetTitle($ci)}} | Format-Table -AutoSize

Результат:

DisplayName Title

----------- -----

PublishingPrerequisites Publishing Prerequisites

PublishingResources Publishing Resources

PublishingLayouts Пакет макетов страниц и главных страниц

PublishingSite Инфраструктура публикации SharePoint Server

Эта информация должна позволить Вам быстро находить нужные возможности.

 

Каждая возможность – это класс .NET (Microsoft.SharePoint.Administration.SPFeatureDefinition)

Получить список свойств и методов можно командой:

Get-SPFeature | select -Index 0 | Get-Member | select Name, MemberType, Definition | Format-List

Здесь выведены наиболее интересные:

Name MemberType

---- ----------

GetDescription Method

GetElementDefinitions Method

GetFile Method

GetImageUrl Method

GetObjectData Method

GetTitle Method

GetXmlDefinition Method

Provision Method

Unprovision Method

Update Method

ActivateOnDefault Property

ActivationDependencies Property

AlwaysForceInstall Property

AutoActivateInCentralAdmin Property

DefaultResourceFile Property

DisplayName Property

Hidden Property

Id Property

Name Property

Properties Property

ReceiverAssembly Property

ReceiverClass Property

RequireResources Property

Scope Property

SolutionId Property

Status Property

UpgradedPersistedProperties Property

UpgradeReceiverAssembly Property

UpgradeReceiverClass Property

Version Property

 

Список активированных возможностей можно получить командой:

$url = "http://portal"

Get-SPFeature -Site $url | ? {$_.Hidden -eq $false} | select -property DisplayName, @{Name="Title"; Expression = {$_.GetTitle($ci)}} | Format-Table –AutoSize

В этом примере выводится список активированных возможностей в семействе сайтов, не являющихся скрытыми.

 

Для активации возможности воспользуйтесь командой:

Get-SPFeature -Identity PublishingSite | Enable-SPFeature -Url $url –PassThru

Эта команда получает возможность Инфраструктура публикации и активирует ее на указанном сайте (в области Site, поскольку она там определена).