J’ai beaucoup hésité pour donner un titre à cet article parce que le titre pouvait être aussi “comment consommer un Web Service en utilisant PowerShell ?” mais j’ai préféré parler plutôt de la finalité que les moyens.

En tout cas, vous avez compris que vous pouvez utiliser PowerShell pour exécuter un web service ou tout simplement pour le tester. Juste entre nous, il faut beaucoup moins de lignes de codes pour consommer un Web Service dans PowerShell que dans Visual Studio. La finalité des deux outils n’étant pas la même, je ne vais pas m’étendre sur ce sujet !!

Dans cette article, nous allons :

  • Créer un Codeunit pour décompresser et importer le package .RapidStart (je crée un nouveau Codeunit pour ne pas modifier les objets standards et pour faciliter toutes automatisation de tâches de déploiement par la suite)
  • Publier le Codeunit en WebService
  • Consommer le Web Service avec PowerShell

 

Création d’un Codeunit pour déployer un package RapidStart :

Créer un nouveau Codeunit avec une fonction ImportPackage et qui appelle tout simplement les fonctions de décompression et d’import du fichier RapidStart :

PROCEDURE ImportPackage@1100267001(Path@1100267000 : Text) : Boolean;
VAR
  ServerFileName@1000 : Text;
  DecompressedFileName@1001 : Text;
  RSMgmt@1100267001 : Codeunit 8614;
BEGIN
  ServerFileName := Path;
  DecompressedFileName := RSMgmt.DecompressPackage(ServerFileName);
  EXIT(RSMgmt.ImportPackageXML(DecompressedFileName));
END;

Publication du Codeunit en Service Web :

Publier le Coedunit dans la page “Service Web” :

image 

Ecriture du script PowerShell :

Et voici les 4 lignes de code pour consommer la méthode ImportPackage de notre Web Service Dynamics NAV

# Consommer un web service Dynamics NAV

$Company = 'CRONUS France Nord'

#Connecter et instancier le service web Dynamics NAV

$uri = 'http://localhost:7047/DynamicsNAV70/WS/'+$Company+'/Codeunit/RapidStartPackage'

$proxy = New-WebServiceProxy -Uri $uri -UseDefaultCredential

$path = 'C:\temp\PackageCONFIG-BASIC-FR.rapidstart'

#Exécuter l'import du package

echo $proxy.ImportPackage($path) 

 

fastoche non ? :-)

Enjoy ! et Happy Christmas