Share via


ISPStsadmCommand.Run - Méthode

Exécute l'opération spécifiée. Cette méthode est désapprouvée et ne peut pas pris en charge dans les futures versions de SharePoint Foundation. Pour les opérations de ligne de commande personnalisée, consultez l'espace de noms Microsoft.SharePoint.PowerShell .

Espace de noms :  Microsoft.SharePoint.StsAdmin
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

Syntaxe

'Déclaration
Function Run ( _
    command As String, _
    keyValues As StringDictionary, _
    <OutAttribute> ByRef output As String _
) As Integer
'Utilisation
Dim instance As ISPStsadmCommand
Dim command As String
Dim keyValues As StringDictionary
Dim output As String
Dim returnValue As Integer

returnValue = instance.Run(command, keyValues, _
    output)
int Run(
    string command,
    StringDictionary keyValues,
    out string output
)

Paramètres

  • command
    Type : System.String

    Le nom de l'opération personnalisée.

  • output
    Type : System.String

    Une chaîne de sortie, si nécessaire.

Valeur renvoyée

Type : System.Int32
Un Int32 qui peut être utilisé pour signaler le résultat de l'opération. Pour un fonctionnement correct avec STSADM, utilisez les règles suivantes lors de l'implémentation.
Renvoie 0 en cas de succès.
Retourner GeneralError (-1) pour toute erreur autre que de syntaxe.
Retourner SyntaxError (-2) pour une erreur de syntaxe.
Si 0 est retourné, STSADM transmet output, si elle n'est pas une référence Null (Rien dans Visual Basic), dans la console.
Lorsque SyntaxError est retourné, STSADM appelle GetHelpMessage et sa valeur de retour est transmis en continu à la console et de flux de données output, si elle n'est pas une référence Null (Rien dans Visual Basic), vers stderr (erreur standard). Pour obtenir le contenu de stderr dans du code managé, utilisez Error.
Lors de toute autre valeur est retournée, STSADM transmet output, si elle n'est pas une référence Null (Rien dans Visual Basic), à stderr.

Remarques

Avertissement

Cette méthode est documentée uniquement pour fournir une assistance au dépannage des extensions existantes de STSADM.EXE. Ne créez pas de nouvelles extensions. Au lieu de cela, étendre PowerShell. Consultez l'espace de noms Microsoft.SharePoint.PowerShell .

Chaque membre de keyValues est une paire composée d'un nom de paramètre (qui ne peut pas être une référence Null (Rien dans Visual Basic)) suivi d'une valeur (qui peut être une référence Null (Rien dans Visual Basic)).

Cette méthode est appelée lorsque l'utilisateur tape la commande suivante à l'invite du système, où myOperation est le nom de votre opération personnalisée et parameters est l'ensemble des paires paramètre/valeur. Chaque paramètre commence par un «-» et est séparé de sa valeur, le cas échéant, par un espace.

stsadm -o myOperation [parameters]

S'il existe des restrictions sur la combinaison de paramètres ou des valeurs de paramètre qui peuvent être utilisés, ces limitations doivent être appliquées par votre implémentation.

Pensez à expliquer ces restrictions avec le paramètre output chaque fois qu'ils sont violées. Ce paramètre est transmis en continu à stderr lorsque, Run renvoie une valeur différente de 0.

Par exemple, supposons qu'une opération est conçue pour fonctionner sur des sites qui peuvent ou ne peuvent pas être optimisées pour l'affichage sur des appareils mobiles, tels que les téléphones portables Web. Une telle opération peut tester pour la détection des périphériques mobiles avec un paramètre « ismobile » ayant « true » ou « false » en tant que valeurs. L'opération peut nécessiter également un paramètre « renderinglimit » qui définit la taille maximale d'une chaîne de message à chaque fois que « ismobile » est « true ». Si un utilisateur ne parvient pas à inclure une valeur « renderinglimit » sur une ligne de commande qui définit « ismobile » pour true, Run doit retour une valeur autre que 0 ou SyntaxError (-2) et la chaîne retournée par le paramètre output doit spécifier que lorsque « ismobile » a la valeur true, « renderinglimit » doit être présente et définie sur une valeur.

Exemples

L'exemple suivant montre une implémentation de Run pour une opération qui détaille les fonctionnalités d'un site. Notez que, étant donné que la classe personnalisée dans cet exemple crée uniquement une nouvelle opération, l'instruction switch (Select Case dans Visual Basic) doit tenir compte pour seulement cette opération ("enumfeatures") et le cas de default (Else dans Visual Basic). Si plus d'une nouvelle opération était en cours de définition, l'instruction case devez traiter chaque valeur possible de command.

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

namespace MS.Samples.SharePoint
{
    public class SimpleCommandHandler : ISPStsadmCommand
    {
        //GetHelpMessage() implementation not shown. 

        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 
        Implements ISPStsadmCommand 
        'GetHelpMessage() implementation not shown. 
        
        Public Function Run(ByVal command As String, ByVal keyValues As StringDictionary, 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, 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 + "':" & Chr(10) & "") 
            
            For Each feature As SPFeature In features 
                sb.AppendLine(feature.Definition.DisplayName + " (" + feature.DefinitionId + ")") 
            Next 
            
            output = sb.ToString() 
            
            Return 0 
        End Function 
    End Class 
End Namespace

Voir aussi

Référence

ISPStsadmCommand interface

ISPStsadmCommand - Membres

Microsoft.SharePoint.StsAdmin - Espace de noms

Autres ressources

How to: Extend the STSADM Utility

l'outil de ligne de commande Stsadm.exe (Office SharePoint Server)