Création d’un cmdlet Powershell [Partie2]
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)
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
Quelques secondes après, la liaison est effectuée entre WebService et projet.
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 :
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
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
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 :
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.