preloader
22 June 2011 / #.net #Powercli #Powershell

Création d’un cmdlet Powershell [Partie2]

post-thumb

Suite de l’article Création d’un cmdlet Powershell [Partie1]

Dans l’article précédent, nous avons vu le début de la création d’un cmdlet, enfin surtout la préparation.

Dans ce billet, on commencera à aborder plus la partie coding (yeah, faut avouer, c’est là que c’est le plus fun ^^)

Liaison avec les WebServices de PxeManager

Dans notre exemple, on veut proposer des cmdlet qui viennent s’interfacer avec le plugin PxeManager.

Là encore, Max nous a fait halluciner et propose de base sur le plugin des WebServices (rien que ça !)

Une fois votre agent PxeManager installé, si vous naviguez sur

https://monagent:8733/vgpxe/vgpxe.asmx

vous tomberez sur la page décrivant les WebServices que peut offrir PxeManager ^^ (pour ceux qui sont habitués, ça correspond au /EXS/Services.asmx dans Exchange 2007/2010)

ScreenShot135

le Service Referencing et les classes proxy via fichier WSDL

Service referencing

Cette partie est liée à Visual Studio 2010 qui permet une intégration directe d’un WebService dans le projet.

Par exemple, il suffit de faire un clic droit sur le projet VS2010, puis de cliquer sur Add Service Reference, de renseigner le chemin vers le fichier .asmx (comme vu ci-dessus) et de cliquer sur Go

ScreenShot140

Quelques secondes après, la liaison est effectuée entre WebService et projet.

ScreenShot141

Pour vérifier que tout marche bien, on peut aller se ballade dans le Object Browser et voir ainsi toutes les classes disponibles liées à ce WebService :

ScreenShot144

Le type est bien reconnu : It Works !

Classes proxy et fichier WSDL

A l’aide du fichier WSDL (Web Services Description Language, fichier de description du WebService) disponible sur tout agent PxeManager, vous pouvez créer les classes proxy pour les intégrer à votre projet.

https://monagent:8733/vgpxe/vgpxe.asmx?WSDL

ScreenShot136

La génération de classes proxy permettent d’avoir automatiquement les appels/déclarations des classes qui se trouvent dans les WebServices. Ça permet de créer l’intermédiaire code<>WebService sans avoir à se palucher tout à la main (et pour le coup c’est intéressant, le fichier des classes proxy de PxeManager fait quand même 22.000 lignes :p)

Pour générer les classes proxy, on utilise l’outil wsdl.exe via la commande suivante :

wsdl.exe https://monagent:8733/vgpxe/vgpxe.asmx?WSDL /out:ProxyVimpxe.cs

ScreenShot145

Note : Si vous avez des problèmes lié à SSL pour la création du fichier .cs, il se peut que le certificat présent sur l’agent PxeManager soit un certificat autosigné et donc non reconnu depuis une autre machine. Dans ce cas, il suffit de sauvegarder le fichier .wsdl en local et lancer la commande en spécifiant ce fichier Une fois le fichier ProxyVimpxe.cs généré, il suffit de l’ajouter dans notre projet via un clic droit sur le projet Add Existing File A partir de là, on peut instancier notre classe via un :

ScreenShot146

Note : Bien que le résultat soit le même (notre code est interfacé avec les WebServices), la méthode choisie impliquera un code différent, les appels n’étant pas les mêmes. Dans notre cas, on se basera sur les classes proxy et fichier WSDL pour la suite des exemples.


> Frederic MARTIN