我正在编写一个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')
答案 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个参数:Id
,ReportName
,Format
,Directory
,ReportXslFileDefaultOrCustom
,ReportXslFile
。
你传递了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对我来说很奇怪,但你是唯一一个知道正确值应该是什么的人