/ / Як я можу оновити об'єкт через службу OData за допомогою PowerShell? - powerhell, odata, powershell-v4.0

Як я можу оновити об'єкт через службу OData, використовуючи PowerShell? - powerhell, odata, powershell-v4.0

Я намагаюся розробити, як робити оновлення OData, використовуючи PowerShell як клієнт. Я знайшов сайт services.odata.org, який слід використати для тестування: http://services.odata.org/OData/OData.svc/$ метадані.

Я спробував це:

Invoke-RestMethod -Method Put -ContentType "application/json" `
-Uri "http://services.odata.org/V3/(S(k22mmq0ajlv45epd2psyysnd))/OData/OData.svc/Products(0)" `
-Body ( @{ Description = "CheesyPeas" } | ConvertTo-Json )

але я повертаюся

Invoke-RestMethod : <?xml version="1.0" encoding="utf-8"?>
<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code />
<m:message xml:lang="en-US">
Error processing request stream. Type information must be specified for types that take part in inheritance.
</m:message>
</m:error>
At line:1 char:1
+ Invoke-RestMethod -Uri "http://services.odata.org/V3/(S(k22mmq0ajlv45epd2psyysnd ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Я думаю, що це має щось спільне з цимНавігаційні властивості. В ідеалі я б перевіряв просту сутність без властивостей навігації, поки я не отримав базовий PUT, але я не можу його знайти. Чи може хто-небудь допомогти мені це зробити?

Відповіді:

3 для відповіді № 1

Як сказано в помилці, вам потрібно вказати тип, який ви надсилаєте в тілі.

Напишіть свій код так:

Invoke-RestMethod -Method Put -ContentType "application/json" `
-Uri "http://services.odata.org/V3/(S(k22mmq0ajlv45epd2psyysnd))/OData/OData.svc/Products(0)" `
-Body ( @{ "odata.type" = "ODataDemo.Product"; Description = "CheesyPeas" } | ConvertTo-Json )