SharePoint et les outils de gestion et de configuration

L'administration de SharePoint est un vaste sujet. Dans cet article, nous allons parcourir la liste des outils existants et voir comment on peut étendre les outils de configuration via stsadm et powershell.

Article lu   fois.

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. SharePoint et ses outils standards

Out of the box, SharePoint propose trois outils principaux permettant d'administrer et de gérer une ferme au quotidien. Ces outils sont :

  • la centrale d'administration
  • stsadm
  • psconfig

La centrale d'administration permet de gérer de manière interactive toute une série d'éléments permettant à une ferme SharePoint de fonctionner. On y retrouve principalement trois grandes sections :

  • L'onglet Applications : il permet de gérer tout ce qui est relatif aux applications SharePoint, à savoir les collections de sites, la sécurité, les fonctionnalités d'application, forms server...
  • L'onglet Operations : il permet de gérer toutes les fonctionnalités transversales (ayant un scope de ferme) comme par exemple les serveurs, les services, les jobs, les logs etc...
  • Les centres de services partagés : ils permettent de gérer tous les composants tels que Excel Services, le moteur de recherche, les profils utilisateurs, les audiences....

En plus de pouvoir effectuer des opérations ayant un impact direct, la centrale permet de définir des tâches programmées devant s'exécuter de manière répétée et automatique.

stsadm permet de gérer en ligne de commande quasiment tout ce que l'on peut faire depuis la centrale. Simplement, étant donné qu'il s'agit d'une ligne de commande, il est possible de l'encapsuler dans un fichier batch et de scripter toute une série d'opérations. En outre, certaines tâches telles que l'ajout d'une solution (stsadm -o addsolution) ne sont pas réalisables depuis la centrale.

psconfig permet de gérer en ligne de commande ce que l'assistant graphique de configuration post-installation fait.

II. SharePoint et les outils communautaires

En complément des outils standards, il existe toute une série d'outils communautaires permettant de gérer une ferme et de comprendre comment celle-ci fonctionne. Pour certains d'entre eux, l'objectif est d'ailleurs plus d'outiller les développeurs que d'être réellement un outil utilisé dans le cadre d'une gestion classique de ferme. Voici une liste non exhaustive des plus connus :

SharePoint Manager http://spm.codeplex.com/ Un outil permettant de visualiser/gérer à peu près tous les objets présents dans une ferme SharePoint. C'est une application Windows.
SharePoint SUSHI http://sushi.codeplex.com/ Un outil permettant de gérer la création multiple de listes, de visualiser des rapports relatifs à la sécurité etc..
stsadm extensions de Gary Lapointe http://stsadm.blogspot.com/ Un outil permettant proposant une longue série d'opérations additionnelles pour stsadm.

III. Quels outils pour personnaliser et faciliter l'administration?

III-A. PowserShell

PowerShell remplace avantageusement les traditionnels fichiers batch DOS. Même si ceux-ci restent encore utilisables, ils font pâle figure face à PowerShell. Je vous invite à lire l'excellent article de Fabrice Romelard sur le sujet où il décrit comment exploiter PowerShell avec SharePoint. Par ailleurs, il a également créé un projet sur CodePlex où il a déposé toute une série de scripts pouvant servir au plus grand nombre.

III-B. Commandes stsadm personnelles

SharePoint étant une plate-forme totalement ouverte, il est possible de créer ses propres opérations stsadm. Voici la marche à suivre :

III-B-1. Création du projet Visual Studio

Créez simplement un projet de type Class Library avec Visual Studio :

Image non disponible

Renommez class1.cs en DvpOperation.cs

Signez le projet :

Image non disponible

Ajoutez ensuite une référence à la DLL Microsoft.SharePoint en cliquant sur References => Add Reference => Windows SharePoint Services

Structurez votre projet comme suit en créant les répertoires 12 et 12\CONFIG et en ajoutant un fichier XML stsadmcommands.dvp.xml au répertoire CONFIG:

Image non disponible

Implémentez ensuite l'interface ISPStsadmCommand :

Image non disponible

Deux méthodes doivent être écrites :

  • GetHelpMessage : permet de retourner un message d'aide destiné à l'utilisateur
  • Run : exécute les instructions de l'opération en cours. Cette méthode retourne le status au processus appelant. Ce status est classiquement 0 quand tout va bien et -1 ou -2 en cas d'erreur

Il ne nous reste désormais plus qu'à imaginer un scénario. Disons que l'on va prendre en paramètre une URL ciblant un site et que l'on va lister toutes les listes cachées que ce site contient. On appellera donc cette opération showhiddenlists.

Avant d'implémenter le code, nous allons rendre cette commande connue par le système. Pour ce faire, ouvrez votre fichier xml stsadmcommands.dvp.xml préalablement créé et insérez-y ceci :

 
Sélectionnez

<?xml version="1.0" encoding="utf-8" ?>
<commands>
 <command
  name="showhiddenlists"
  class="DVP.StsAdmExtensions.DvpOperation, DVP.StsAdmExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=391fd2089473022a"/>	
</commands>

Vous pouvez décrire une ou plusieurs commandes. Les attributs sont name qui correspond au nom de la commande, en l'occurrence showhiddenlists et class qui pointe vers la classe de l'assemblage que nous sommes en train de réaliser. Pour récupérer votre signature, utilisez .NET Reflector.

Le fichier sera déployé dans le répertoire 12\CONFIG de SharePoint. Il doit impérativement s'appeler stsadmcommands.<ce que vous voulez>.xml

Passons à présent au code, implémentez les deux méthodes comme suit:

 
Sélectionnez

string ISPStsadmCommand.GetHelpMessage(string command)
{
    return "usage : stsadm -o showhiddenlists -url <votre url>";
}
int ISPStsadmCommand.Run(string command, System.Collections.Specialized.StringDictionary keyValues, out string output)
{
    StringBuilder CommandOutput = new StringBuilder();
    output = string.Empty;
    if (!keyValues.ContainsKey("url"))
        return -2;
    try
    {
        using (SPSite Site = new SPSite(keyValues["url"]))
        {
            using (SPWeb Web = Site.OpenWeb())
            {
                SPListCollection Lists = Web.Lists;
                foreach (SPList List in Lists)
                {
                    if (List.Hidden)
                        CommandOutput.AppendFormat(
                            "List : {0}\r\nGuid : {1}\r\n Items : {2}\r\n\r\n-------------------------------------\r\n",
                            List.Title,
                            List.ID.ToString(),
                            List.ItemCount.ToString());

                }
            }
        }
        output = CommandOutput.ToString();
    }
    catch (Exception Ex)
    {
        output = Ex.Message;
        return -2;
    }

    return 0;
}

III-B-1-a. Déployer la commande

Pour la belle méthode :
Utilisez WSPBuilder pour générer et déployer votre solution :

Image non disponible

Sur un serveur de dev
Copiez le fichier stsadmcommands.dvp.xml dans le 12\CONFIG de SharePoint et faites un glisser-déplacer de votre DLL vers c:\windows\assembly. Il n'est bien sûr pas nécessaire de redémarrer IIS puisqu'il n' intervient pas dans l'exécution d'une commande stsadm.

III-B-1-b. Debugger une commande stsadm

Ajoutez simplement le code :

 
Sélectionnez

System.Diagnostics.Debugger.Launch();

à l'endroit où vous souhaitez intercepter l'exécution de votre code.

IV. Conclusion

PowerShell et la possibilité d'étendre stsadm offrent d'innombrables perspectives en terme d'automatisation de tâches administrative et de flexibilité.

V. Téléchargement

Vous pouvez télécharger l'exemple proposé ici

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2009 Developpez. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.