Powershell SOAP服务 - 无法为..和参数计数找到重载:" 7"

时间:2016-09-08 12:01:26

标签: windows powershell soap

我正在编写一个windows powershell脚本(第一个计时器),它需要调用在同一台本地计算机上运行的服务。我有以下代码适用于其他fetch相关方法,但这个给了我以下错误:

  

无法找到" WriteReport"和参数计数:" 7"。

$svc = New-WebServiceProxy -Uri "http://localhost:55810/3/PublicService.svc?singlewsdl"
$svc.WriteReport2(@($body.Id), 'PDF', 0, 0, '', $null, $false)

$svc.WriteReport的输出:

Cannot find an overload for "WriteReport2" and the argument count: "7".
At C:\Users\Administrator\Desktop\App\App_Powershell\App-PS-CheckQueue.ps1:44 char:35
+               $svc.WriteReport2(@($body.Id), 'PDF', 0, 0, '', $null, $false)
+                                   ~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest


OverloadDefinitions
-------------------
string WriteReport(int[] Ids, Service.ReportFormatType Format, bool
FormatSpecified, System.Nullable[Service.DefaultOrCustomType]
DirectoryDefaultOrCustom, bool DirectoryDefaultOrCustomSpecified, string
Directory, System.Nullable[Service.DefaultOrCustomType]
ReportXslFileDefaultOrCustom, bool ReportXslFileDefaultOrCustomSpecified,
string ReportXslFile)

posted the WSDL here on pastebin(截断版):http://pastebin.com/N4ru4DJE

我对整个Windows环境(powershell,.NET等)都很陌生,有人可以帮助我或指出我的方向吗?

更新

我尝试更新我的调用以使用6个参数并与WSLD匹配,但我仍然得到同样的错误:

  

无法找到" WriteReport2"和参数计数:" 6"。   $ svc.WriteReport2(@($ body.taskId),' PDF',' PDF',' ... \ Desktop \ Reports','默认',' ... \ Desktop \ Reports \ Report.xml')

1 个答案:

答案 0 :(得分:2)

来自您刚刚发布的WSDL:

<xs:element name="WriteReport2">
           <xs:complexType>
             <xs:sequence>
                   <xs:element minOccurs="0" name="Ids" nillable="true" type="q8:ArrayOfint"                                   xmlns:q8="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
                   <xs:element minOccurs="0" name="ReportName" nillable="true" type="xs:string"/>
                   <xs:element minOccurs="0" name="Format" type="tns:ReportFormatType"/>
                   <xs:element minOccurs="0" name="Directory" nillable="true" type="xs:string"/>
                   <xs:element minOccurs="0" name="ReportXslFileDefaultOrCustom" nillable="true"                                  type="tns:DefaultOrCustomType"/>
                   <xs:element minOccurs="0" name="ReportXslFile" nillable="true" type="xs:string"/>
               </xs:sequence>
           </xs:complexType>
      </xs:element>

您的方法有6个参数:IdReportNameFormatDirectoryReportXslFileDefaultOrCustomReportXslFile。 你传递了7个参数:

$svc.WriteReport2(@($body.Id), 'PDF', 0, 0, '', $null, $false)

找出你不需要的并删除它。

只是为了帮助你。这就是Powershell的看法:

Ids - @($body.Id)
ReportName - 'PDF'
Format - 0
Directory - 0
ReportXslFileDefaultOrCustom - ''
ReportXslFile - $null
? - $false

目录 - 0对我来说很奇怪,但你是唯一一个知道正确值应该是什么的人