获取'无法找到" checkVat"并且参数计数'使用Powershell的VIES SOAP服务出错

时间:2015-11-03 22:09:46

标签: powershell soap powershell-v4.0

我尝试使用PowerShell(使用5.0版)使用VIES Soap网络服务检查增值税号。

我收到以下错误:

'Cannot find an overload for "checkVat" and the argument count: "2".'

从我在wsdl文件中看到的内容,checkVat函数接受两个字符串值countryCodevatNumber

这是我使用的代码:

$proxy = New-WebServiceProxy -Uri "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"
Try{
    $response = $proxy.checkVat("ES","A28017895")
    $response
}Catch{
    $_.Exception.Message
}

造成错误的原因是什么?

2 个答案:

答案 0 :(得分:0)

好吧,checkVat函数需要更多参数,您还需要使用[ref]关键字。这是一个有效的例子:

$proxy.checkVat([ref]"ES",[ref]"A28017895", [ref]$true, [ref]"", [ref]"")

答案 1 :(得分:0)

我最近在阅读this article,并想使用PowerShell测试Vies数据库并发现这篇文章。

基本上,单词[ref]代表通过引用传递的值。这意味着,如果您定义一个本地对象,并将其传递给新方法,它将指向已定义的本地对象,并且所做的任何更改都会反映出来。默认情况下,该对象按值传递,并且在方法中进行的任何更改都不会更改本地对象。

请参见下面的脚本和输出示例:

Function Get-ViesVatNumber {
[CmdletBinding()]
    param (
        [Parameter(Mandatory=$true,
                   Position=0)]
        $CountryCode,

        [Parameter(Mandatory=$true,
                   Position=1)]
        $VatNumber
    )

    $Vies = New-WebServiceProxy -Uri "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl" -Class "checkVat"

    $Valid = $false
    $Name = ""
    $Address = ""

    $DateChecked = $Vies.checkVat([ref]$CountryCode, [ref]$VatNumber, [ref]$Valid, [ref]$Name, [ref]$Address)

    $Properties = @{
        'CountryCode'   = $CountryCode
        'VatNumber'     = $VatNumber
        'Valid'         = $Valid
        'Name'          = $Name
        'Address'       = $Address
        'DateChecked'   = $DateChecked
    }

    $Company = New-Object -TypeName PSCustomObject -Property $Properties

    Write-Output $Company
}

带有有效增值税的示例

Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429375"

DateChecked : 02/08/2018 00:00:00
Name        : Comm.VA ALPRO
VatNumber   : 0420429375
Address     : VLAMINGSTRAAT 28
              8560 WEVELGEM
Valid       : True
CountryCode : BE

示例包含无效的增值税

Get-ViesVatNumber -CountryCode "BE" -VatNumber "0420429335"

DateChecked : 02/08/2018 00:00:00
Name        : ---
VatNumber   : 0420429335
Address     : ---
Valid       : False
CountryCode : BE