kraemer
Goto Top

Powershell - SOAP - Benannte Parameter

Moin zusammen,

ich beschäftige mich gerade zum ersten mal mit SOAP und das in Powershell.

Die Verbindung zum Webservice wird mittels New-WebServiceProxy initiiert. Das funktioniert soweit auch.
Nun gibt es da eine Methode GetItemStock. Diese ist wie folgt definiert:

OverloadDefinitions                                                                                                                                                                           
-------------------                                                                                                                                                                           
System.Object GetItemStock(System.Data.SqlTypes.SqlInt32 ItemKey, System.Data.SqlTypes.SqlString EAN, System.Data.SqlTypes.SqlString ItemNrSuppl, System.Data.SqlTypes.SqlString        
ItemNrInt, System.Data.SqlTypes.SqlBoolean LocationStock, System.Data.SqlTypes.SqlBoolean OnlyEnabledItems, System.Data.SqlTypes.SqlString ExcludeBinGroups) 

Soweit klar. Die Methode braucht nur einen Wert (EAN oder ItemKey oder oder) um zu funktionieren - getestet mit SoapUI. Deswegen würde ich gerne sagen wir EAN über einen benannten Parameter übergeben. Bei einer Powershell-Function würde ich das Beispielsweise mit -EAN erledigen

$response=$Webservice.GetItemStock -EAN 12345

Nur funktioniert das hier nicht - unerwartetes Token.

Geht das hier nicht oder fehlt mir da mal wieder Wissen im Bereich Powershell?

Lieben Dank und Gruß

Content-ID: 364742

Url: https://administrator.de/contentid/364742

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

135333
135333 14.02.2018 aktualisiert um 11:10:06 Uhr
Goto Top
Eine Funktion eines Objektes rufst du anders auf

$Webservice.GetItemStock(Parameter1,Parameter2)
Und wenn der Typ eines Parameters nicht eindeutig ist, gebe den Typ in eckigen Klammern vor dem Parameter an.
Bsp.
[int32]$parametervariable
Kraemer
Kraemer 14.02.2018 um 11:16:36 Uhr
Goto Top
Soweit klar. Also muss ich tatsächlich alle Parameter übergeben und kann sie nicht per Name referenzieren? Wie kann ich dann aber prüfen, ob sich der Aufruf nicht (in der Reihenfolge) geändert hat?
135333
135333 14.02.2018 aktualisiert um 11:32:15 Uhr
Goto Top
Also muss ich tatsächlich alle Parameter übergeben und kann sie nicht per Name referenzieren?
Nur die die für den "jeweiligen Konstruktor" nötig sind. Damit das passiert müsste ja der Webservice geändert werden. Und somit auch dein Skript, außer du wertest die Methoden Parameter manuell selbst aus.
Das sind normale Funktionsdefintionen wie sie es in jeder Programmiersprache gibt.

Mit Get-Member kannst du alle Methoden und Eigenschaften inkl. Parameterdefintion auslesen.