[EDIT]
La version 2 est disponible, le web service étant remplacé par un service WCF.
[/EDIT]
Pour les besoins d'un article qui devrait paraitre très prochainement, j'ai cherché une solution qui me permettrait d'exécuter à distance des commandes stsadm. N'ayant rien trouvé de concluant (malgré le fait que PowerShell pointe le bout de son nez), j'ai développé une petite application me permettant d'encapsuler une commande stsadm et de l'envoyer sur un serveur SharePoint pour exécution.
L'installation est simple :
- Ajouter un site IIS sur un des serveurs de la ferme SharePoint qui va servir à héberger le Web Service (pour le pool d'application de ce site, utilisez celui de la console centrale d'administration pour que vous ayez les droits nécessaires, ou créez en un nouveau avec un compte ayant suffisamment de droits)
- Utiliser l'application cliente NetStsAdm.exe prenant en paramètre l'url précédemment créée, les credentials qui vont bien et bien entendu le reste de la commande stsadm.
Donc concrètement, le commande suivante que vous exécuteriez directement sur le serveur :
deviendra depuis une autre machine:
NetStsAdm –TargetURL http://SharePoint –TargetLogin Admin –TargetPwd Pwd –o enumssp –all
On ajoute les 3 paramètres TargetURL, TargetLogin et TargetPwd avec les bonnes valeurs, et on tape la commande stsadm désirée. Dans un environnement cross-domain, le TargetLogin peut être de la forme Domain\UserName.
Petite parenthèse, si votre commande stsadm fait appel à l'opération AddSolution, pas de soucis. En effet, le paramètre FileName prendra le chemin en local vers le package, et NetStsAdm enverra dans un premier temps le package vers le serveur cible dans un répertoire temporaire, et bien entendu transformera la commande stsadm en conséquent.
Supposons que votre package se trouve en local sur d:\dev\SharePoint\solution.wsp, vous exécuterez la commande:
NetStsAdm –TargetURL http://SharePoint –TargetLogin Admin –TargetPwd Pwd –o addsolution -filename d:\dev\SharePoint\solution.wsp
Le fichier wsp sera dans un premier temps transférer sur le serveur cible dans l'emplacement c:\Windows\temp (ou tout autre emplacement revoyé par le code System.IO.Path.GetTempPath())
Puis la commande suivante sera exécutée sur le serveur:
stsadm -o addsolution -filename c:\windows\temp\solution.wsp
Vous pouvez télécharger cet utilitaire ici. Attention, il est fourni "AS IS" donc testez bien avant utilisation sur un environnement autre que développement.
L'article nécessitant ce petit utilitaire proposera une solution pour pouvoir développer des applications SharePoint depuis une workstation XP ou Vista.