Il y a quelque mois de cela, j’avais mis à disposition sur CodePlex un petit outil, netstsadm permettant d’exécuter des commandes stsadm à distance, depuis une station de travail vers un serveur de la ferme SharePoint. Cet outil entrait dans le cadre d’une méthodologie de développement SharePoint que je proposais. Bref, ce n’est plus s’actualité, car avec l’arrivée de cette vague 2010 (SharePoint, Visual Studio et consort), la donne a changé !
Le principe de cet outil est simple : un service WCF écoute sur un serveur de la ferme SharePoint, et une application cliente lance des requêtes, sous la forme :
Netstadm –TargetURL http://SharePoint –o enumssp –all
Cette commande est lancée sur le serveur, convertie en “stsadm”, exécutée puis le résultat est renvoyé vers l’application cliente.
Dans SharePoint 2010, stsadm est conservé, donc cet outil fonctionnera parfaitement. Cependant, LA nouveauté associée à SharePoint 2010 en matière d’administration est l’utilisation de PowerShell. PowerShell est une interface en ligne de commandes et un langage de script puissant permettant de gérer et d’administrer des machines de façon efficace. Dans SharePoint 2007, stsadm comptait 182 commandes, SharePoint 2010 compte plus de 500 commandes PowerShell, appelées « cmdlets ».
Je ne suis pas ici pour parler de PowerShell, vous trouverez d’autres ressources sur Internet. En revanche, je voudrais parler de la notion de PowerShell à distance, ou Remote PowerShell. L’idée est tout simplement d’activer un service d’écoute sur une machine, et de lancer des requêtes depuis une autre machine. Trêve de blabla …
Depuis le serveur qui doit recevoir les commandes (dans ce billet, SPDEMO), ouvrez l’outil PowerShell (en mode administrateur) et tapez
Enable-PSRemoting
Ceci lancera tous les services d’écoutes nécessaires.
Depuis maintenant la machine qui doit lancer des commandes, ouvrez l’outil en ligne de commandes DOS (en tant qu’administrateur), et taper
winrm set winrm/config/client @{TrustedHosts="SPDEMO"}
Winrm est un outil Windows (Windows Remote Management) qui est mis sur écoute par la commande lancée depuis le serveur SPDEMO. La commande précédente indique au client que le serveur SPDEMO est sûr. Testons maintenant la connexion.
Toujours depuis la machine cliente, lancez PowerShell, puis entrez
Enter-PSSession -ComputerName SPDEMO -Credential DOMAIN\USER
Nous créons ici une session vers SPDEMO. Le fait de préciser l’option « Credential » ouvrira une pop-up vous demandant d’enter le mot de passe associé. Une fois la connexion effectuée, vous vous retrouvez avec :
![clip_image002[4] clip_image002[4]](/julien/Media/WindowsLiveWriter/PowerShellet.QuenestilduRemotePowerShell_EF13/clip_image002[4]_thumb.jpg)
Vous pouvez dès à présent lancer des commandes qui seront exécutées sur le serveur SPDEMO (comme hostname dans la capture précédente).
Pour exécuter des commandes SharePoint, il faudra d’abord enregistrer les « cmdlets » SharePoint
Add-PSSnapin Microsoft.SharePoint.PowerShell
Nous pouvons maintenant récupérer la liste de toutes les applications web présentes sur la ferme
Get-SPWebApplication
A la fin, ne pas oublier de quitter la session
Exit-PSSession
Donc comme vous venez de le constater, les possibilités sont immenses. Netstsadm ne restera que pour stsadm, PowerShell étant bien plus puissant ….
- Julien, qui souhaite une excellente année 2010 …