Procedimiento para ampliar la utilidad STSADM
La utilidad STSADM.EXE permite realizar muchas operaciones administrativas en Windows SharePoint Services que no pueden realizarse con la aplicación Administración central. Consulte el artículo Stsadm.exe command-line tool (Office SharePoint Server) en Microsoft TechNet para obtener información detallada. Con Windows SharePoint Services 3.0 puede ampliar la funcionalidad de la utilidad STSADM si agrega sus propias operaciones y parámetros de línea de comandos con proyectos simples mediante el uso de cualquier lenguaje .NET.
La creación de esos proyectos requiere dos tareas principales.
Crear una clase que implemente la interfaz ISPStsadmCommand.
Informar a STSADM sobre su ampliación mediante el registro de la clase y su ensamblado.
Creación de una clase que implemente ISPStsadmCommand
Inicie un proyecto de biblioteca de clases en Visual Studio.
Agregue las instrucciones using para Microsoft.SharePoint y Microsoft.SharePoint.StsAdmin.
Use un espacio de nombres que siga el modelo
CompanyName.TechnologyName.Feature.SubFeature
; por ejemplo,AjaxInc.SharePoint.StsAdmin.CustomCommands
. (Consulte Names of Namespaces.)Use un nombre de clase que exprese el denominador común de las operaciones STSADM que vaya a crear, por ejemplo, "SortCommands".
La clase debe heredar ISPStsadmCommand con una declaración similar a la siguiente.
public class SortCommands : ISPStsAdminCommand
Escriba la implementación del método GetHelpMessage. Consulte el ejemplo siguiente.
Escriba la implementación del método Run. Consulte el ejemplo siguiente.
Compile el proyecto mediante el uso del nombre del espacio de nombres como nombre del ensamblado.
Implemente el ensamblado en la memoria caché de ensamblados global; por ejemplo, C:\Windows\Assembly.
Registro de la nueva clase y el ensamblado
Cree un archivo de texto (UTF-8) denominado stsadmcommands.identificadorÚnico.xml, donde identificadorÚnico es el nombre de su compañía o cualquier otro identificador que garantice el carácter único en cualquier servidor en el que se puede implementar su extensión de STSADM. La declaración XML debería indicar simplemente
<?xml version="1.0" encoding="utf-8" ?>
. El elemento de nivel superior es<commands></commands>
.Para cada operación STSADM personalizada creada, es decir, cada valor posible del parámetro command de GetHelpMessage y Run, agregue un
<command/>
(dentro del elemento<commands>
) en el archivo stsadmcommands con la sintaxis siguiente (vea el siguiente ejemplo). Cambie los valores de versión y referencia cultural según sea necesario.<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>
Reemplace nombre_del_comando, nombre_completo_de_la_clase y nombre_de_ensamblado con los valores correspondientes. (No incluya la extensión ".dll" en el nombre del ensamblado).
Reemplace valor con el token de clave pública del ensamblado que obtiene con estos pasos.
Haga clic con el botón secundario en el ensamblado de la memoria caché de ensamblados global y seleccione Propiedades
En la ficha General, copie el valor de Símbolo de clave pública.
Péguelo como valor de
PublicKeyToken
.
Copie el archivo stsadmcommands.identificadorÚnico.xml en
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG
.
Ejemplo
El ejemplo siguiente muestra el archivo *.cs y, debajo del mismo, el archivo stsadmcommands.identificadorÚnico.xml de una operación STSADM personalizada, denominada enumfeatures, que enumerará las características en un sitio.
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;
}
}
}
<?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>
Vea también
Referencia
Stsadm.exe command-line tool (Office SharePoint Server)
ISPStsadmCommand
GetHelpMessage
Run