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 :
Renommez class1.cs en DvpOperation.cs
Signez le projet :
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:
Implémentez ensuite l'interface ISPStsadmCommand :
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 :
<?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:
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\n
Guid : {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 :
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 :
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