lundi 11 août 2014

Appeler un service WCF SOAP depuis Powershell


Powershell met à disposition le cmdlet New-WebServiceProxy pour créer un proxy pour appeler vos services WCF. Pour créer le proxy, il suffit de lui donner le WSDL du service a appeler.

Une fois le proxy généré, il suffit d'appeler la méthode correspondant à l'opération. Par exemple :

$proxy = New-WebServiceProxy -uri $WSDLUrl;
$res = $proxy.HelloWorld();

Dans le but de faire du monitoring, j'ai écrit un petit script, disponible ci dessous, qui permet, sur base d'un wsdl et du nom de l'opération à appeler, de vérifier que l'opération sur un service s'exécute correctement:

[CmdletBinding(SupportsShouldProcess=$true)]
Param(
    [Parameter(Mandatory=$True)][string]$WSDLUrl,
    [Parameter(Mandatory=$True)][string]$MethodName
    )

Write-Verbose "WSDLUrl=$WSDLUrl"
Write-Verbose "MethodName=$MethodName"

try
{
    $proxy = New-WebServiceProxy -uri $WSDLUrl -ErrorAction Stop
    if(-not $proxy.$MethodName)
    {
        Write-Error "Method $MethodName is not declared on service defined at $WSDLUrl"
        exit 1;
    }
    $res = $proxy.$MethodName.Invoke();
}
catch
{
    Write-Error $_
    exit;
}

if($res)
{
    Write-Verbose $res;
}
else
{
    Write-Verbose "void";
}

Write-Host "service called"

Quelques sources intéressantes si vous souhaitez aller plus loin !