1

定期的にチェックする必要があるいくつかの内部 Web サービスがあり、それらの PowerShell スクリプトを作成しようとしています。私はpowershell 2.0を使用しているため、「invoke-webrequest」を使用できません。「New-WebServiceProxy」または魔法の実行に制限されています。ここと同様のページの例を試しました: http://thepowershellguy.com/blogs/posh/archive/2009/05/15/powershell-v2-get-weather-function-using-a-web-service.aspx

私はWebサービスとpowershellが初めてなので、例を通して学んでいます。それらはすべて、XML 構造などを表す非常に適切にフォーマットされた WSDL を持っています。これらは、メソッドとメソッドが取るパラメーターを公開します。

私の内部Webサービスはそうではありません.schemasLocationがあり、「マルチレベルの関係」のように見えるものがあります。たとえば、私のWSDLでは、次の興味深いメソッドを取得します。

$proxy | get member 

次に、式を使用してメソッドのオーバーロードを取得しようとします

$proxy.InterestingMethod

私が得るのは次のようなものだけです:

Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1com_ABCWS_Service_wsdl.DBResponse getDB(Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1com_ABCWS_Service_wsdl.DBRequest DBRequest)

送信する必要があるパラメーターのリストを期待していました! WSDL で「DBRequest」への参照が見つかりません。別の URL でスキーマに表示されます。複数のレベルで、さまざまな要素にログイン、パスワード、名前、アドレスなどがあるようです。 、そのため、これらのパラメーターを送信するリクエストを作成する方法がわかりません。

この時点で、PowerShell で NewWebservice プロキシを使用できるかどうかわかりません。これはまだ実行できるのだろうか、または、Newwebservice Proxy コマンドレットを使用せずに Web サービスを「生」で使用し、自分で XML を処理する方法を学ぶ必要があります (明らかに、非常に複雑です) 私はこれを正しく行っていますか? または、これに関するスキーマ URL を何らかの方法で考慮する必要がありますか?

みんなありがとう。ドッティ

-- 本日 7 月 25 日に詳細を追加します。可能性はありますが、内部の配列を使用してパラメーターを送信する方法がわかりません (今日、powershell に関する本を読んでいると、私にも役立つかもしれません)。たとえば、WSDL では、メソッドは次のように表示されます。

'<message name="getDB"><part name="request" element="ns1:DBRequest"/></message><message name="getDBResponse"><part name="response" element="ns2:DBResponse"/></message>'

その WSDL には 2 つのスキーマへの参照があります。Firefox を使用してそれらを開くと、一方に request メソッドが表示されます。

'<xs:element name="DBRequest"><xs:complexType><xs:sequence><xs:element name="credentials" type="ns1:Credentials" form="qualified"/><xs:element name="Params" type="ns1:Params" form="qualified"/><xs:element name="Info" type="ns1:Info" form="qualified"/></xs:sequence></xs:complexType></xs:element><xs:element name="DBResponse"><xs:complexType><xs:sequence><xs:element name="transactionResponse" type="ns1:TransactionResponse" form="qualified"/><xs:element name="extremeResponse" type="ns1:extremeResponse" form="qualified" minOccurs="0" maxOccurs="unbounded"/><xs:element name="expressResponse" type="ns1:expressResponse" form="qualified" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element></xs:schema>'  

もう一方では、次のように、送信する必要があるパラメーターの詳細への参照が表示されます。

'xs:complexType name="資格情報">'

そしてこのように

'<xs:complexType name="Params"><xs:sequence><xs:element name="age" type="xs:string" minOccurs="0"/><xs:element name="cType" type="tns:CTypeEnum"/><xs:element name="Method" type="xs:string"/><xs:element name="sType" type="tns:sTypeEnum"/></xs:sequence></xs:complexType>'  

私が何を意味するか分かりますか?WSDL には、渡さなければならないパラメーター (または引数) が表示されません。それらはスキーマ内にあり、そのため、要求を作成する方法がわかりません。

4

1 に答える 1

0

エラーによると、試してみますか:

$proxy.getDB("Your database request")
于 2012-07-25T04:36:41.530 に答える