Поделиться через


Расширение программы STSADM

Дата последнего изменения: 1 мая 2010 г.

Применимо к: SharePoint Foundation 2010

Предупреждающая заметкаВнимание!

Расширение STSADM.EXE исключено и не будет поддерживаться в будущих выпусках Microsoft SharePoint Foundation 2010. Этот раздел предназначен только для помощи в устранении неполадок существующих расширений STSADM.EXE. Не следует создавать новые расширения. Вместо этого следует создавать расширения Windows PowerShell. Дополнительные сведения см. в статье Windows PowerShell в командной консоли SharePoint.

Служебная программа STSADM.EXE разрешает многие административные операции в Windows SharePoint Services, выполнение которых невозможно в приложении центра администрирования. Дополнительные сведения см. в статье Средство командной строки Stsadm.exe (Office SharePoint Server) на веб-сайте Microsoft TechNet. С помощью Windows SharePoint Services 3.0 можно расширить функциональные возможности служебной программы STSADM путем добавления собственных операций и параметров командной строки с простыми проектами, используя язык .NET.

Для создания такого проекта необходимо выполнить две основные задачи.

  1. Создайте класс, реализующий интерфейс ISPStsadmCommand.

  2. Проинформируйте STSADM о расширении путем регистрации класса и его сборки.

Создайте класс, реализующий ISPStsadmCommand

  1. Запустите проект библиотеки классов в Visual Studio.

  2. Добавьте инструкции using для Microsoft.SharePoint и Microsoft.SharePoint.StsAdmin.

  3. Используйте пространство имен, которое следует образцу CompanyName.TechnologyName.Feature.SubFeature. Например, AjaxInc.SharePoint.StsAdmin.CustomCommands. (См. раздел Names of Namespaces.)

  4. Используйте имя класса, выражающее общий знаменатель новых операций STSADM, которые будут создаваться. Например, "SortCommands".

  5. Класс должен наследовать ISPStsadmCommand; с объявлением, аналогичным следующему.

    общий класс SortCommands : ISPStsAdminCommand

  6. Запишите реализацию метода GetHelpMessage. См. следующий пример.

  7. Запишите реализацию метода Run. См. следующий пример.

  8. Скомпилируйте проект, используя имя пространства имен в качестве имени сборки.

  9. Разверните сборку в глобальном кэше сборок. Например, C:\Windows\Assembly.

Зарегистрируйте новый класс и сборку

  1. Создайте текстовый файл (UTF-8) с именем stsadmcommands.uniqueID.xml, где uniqueID — это название организации и другой идентификатор, гарантирующий уникальность на сервере, на котором может быть развернуто расширение STSADM. Объявление XML должно считывать просто <?xml version="1.0" encoding="utf-8" ?>. Элементом верхнего уровня является <commands></commands>.

  2. Для каждой созданной настраиваемой операции STSADM — то есть для каждого возможного значения параметра commandGetHelpMessage и Run — добавьте элемент <command/> (в элементе <commands>) к файлу stsadmcommands со следующим синтаксисом (см. следующий пример). При необходимости измените версию и значения культуры.

    <commands>
        <command 
            name="command_name" 
            class="fully_qualified_class_name, assembly_name, 
            Version=1.0.0.0, 
            Culture=neutral, 
            PublicKeyToken=value"/>
        <!-- other command elements, if any -->
    </commands>
    
  3. Замените command_name, fully_qualified_class_name и assembly_name соответствующими значениями (нельзя включать расширение ".dll" в имя сборки).

  4. Замените значение маркером открытого ключа для сборки, полученным после выполнения этих шагов.

    1. Щелкните правой кнопкой мыши сборку в глобальном кэше сборок, а затем выберите Свойства.

    2. На вкладке Общие скопируйте значение Жетон открытого ключа.

    3. Вставьте его как значение для PublicKeyToken.

  5. Скопируйте файл stsadmcommands.uniqueID.xml в C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG.

Пример

В следующем примере показан файл *.cs и далее файл stsadmcommands.uniqueID.xml для настраиваемой операции STSADM с именем enumfeatures, в которой будут перечислены свойства на сайте.

using System;
using System.Collections.Specialized;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.StsAdmin;

namespace MS.Samples.SharePoint
{
    public class SimpleCommandHandler : ISPStsadmCommand
    {
        public string GetHelpMessage(string command)
        {
            return "-url <full url to a site in SharePoint>";
        }

        public int Run(string command, StringDictionary keyValues, out string output)
        {
            command = command.ToLowerInvariant();

            switch (command)
            {
                case "enumfeatures":
                    return this.EnumerateFeatures(keyValues, out output);

                default:
                    throw new InvalidOperationException();
            }
        }

        private int EnumerateFeatures(StringDictionary keyValues, out string output)
        {
            if (!keyValues.ContainsKey("url"))
            {
                throw new InvalidOperationException("The url parameter was not specified.");
            }

            String url = keyValues["url"];

            SPFeatureCollection features = null;
            SPWeb web = null;

            try
            {
                SPSite site = new SPSite(url);

                web = site.OpenWeb();

                features = web.Features;
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("Error retrieving url '" + url + "'.  Please check the format of your url, and ensure that the site exists.  Details: " + e.Message);
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("Features at '" + web.Url + "':\n");

            foreach (SPFeature feature in features)
            {
                sb.AppendLine(feature.Definition.DisplayName + " (" + feature.DefinitionId + ")");
            }
            
            output = sb.ToString();

            return 0;
        }
    }
}
Imports System
Imports System.Collections.Specialized
Imports System.Text
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.StsAdmin

Namespace MS.Samples.SharePoint
    Public Class SimpleCommandHandler
        Inherits ISPStsadmCommand
        Public Function GetHelpMessage(ByVal command As String) As String
            Return "-url <full url to a site in SharePoint>"
        End Function

        Public Function Run(ByVal command As String, ByVal keyValues As StringDictionary, <System.Runtime.InteropServices.Out()> ByRef output As String) As Integer
            command = command.ToLowerInvariant()

            Select Case command
                Case "enumfeatures"
                    Return Me.EnumerateFeatures(keyValues, output)

                Case Else
                    Throw New InvalidOperationException()
            End Select
        End Function

        Private Function EnumerateFeatures(ByVal keyValues As StringDictionary, <System.Runtime.InteropServices.Out()> ByRef output As String) As Integer
            If Not keyValues.ContainsKey("url") Then
                Throw New InvalidOperationException("The url parameter was not specified.")
            End If

            Dim url As String = keyValues("url")

            Dim features As SPFeatureCollection = Nothing
            Dim web As SPWeb = Nothing

            Try
                Dim site As New SPSite(url)

                web = site.OpenWeb()

                features = web.Features
            Catch e As Exception
                Throw New InvalidOperationException("Error retrieving url '" & url & "'.  Please check the format of your url, and ensure that the site exists.  Details: " & e.Message)
            End Try

            Dim sb As New StringBuilder()

            sb.AppendLine("Features at '" & web.Url & "':" & vbLf)

            For Each feature As SPFeature In features
                sb.AppendLine(feature.Definition.DisplayName & " (" & feature.DefinitionId & ")")
            Next feature

            output = sb.ToString()

            Return 0
        End Function
    End Class
End Namespace
<?xml version="1.0" encoding="utf-8" ?>

<commands>
    <command 
        name="enumfeatures" 
        class="MS.Samples.SharePoint.SimpleCommandHandler, MS.Samples.SharePoint.CustomStsAdmCommand, 
        Version=1.0.0.0, 
        Culture=neutral, 
        PublicKeyToken=4da7a49e92ae373c"/>
</commands>

См. также

Ссылка

ISPStsadmCommand

GetHelpMessage

Run

Другие ресурсы

Names of Namespaces

Программа командной строки Stsadm.exe (Office SharePoint Server)