# Update-ERPObject Cmdlet to update an existing entity in the ERP-System. ## Syntax ```powershell Update-ERPObject [[-EntitySet] ] [[-Keys] ] [[-Properties] ] [] ``` ## Parameters | Type | Name | Description | Optional | |----------------------|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------| | String | EntitySet | The EntitySet name where the item is located.
It is also possible to specify additional namespaces or the whole url (e.g MaterialService/Materials, ) | no | | Hashtable / PSObject | Keys | The reference properties for the updating item | no | | Hashtable / PSObject | Properties | The properties which should be changed | no | ## Return type [Entity]() ← on success\ **empty** ← on failure. Exception/ErrorMessage can be accessed using [\$Error]().\ If the cmdlet fails due to error responses returned by the ERP system, the \$Error variable provides a [WebRequestException]() . ## Remarks This Cmdlet is used to update an existing entity in ERP.\ Per default it uses a **HTTP MERGE** request. :::{admonition} Method: PUT :class: warning When using **PUT** as PreferredUpdateMethod please note that you have to pass **all** properties, otherwise it will replace/reset the properties which where not passed.\ For more information see: [2.6 Updating Entries]() ::: ## Examples In the following examples we are using the default "ERP" plugin from the [powerGateServer](). Additionally they assume that objects with following entities exist: - On **Materials**: *"Number" = "3169"* - On **Descriptions**: *"Number" = "6931", "Language" = "EN"* **Update type in Material** ```powershell Connect-Erp -Service "http://localhost:8080/pgs/ERP/MaterialService/" $entity = Update-ERPObject -EntitySet "Materials" -Keys @{ "Number" = "3169" } -Properties @{ "Type" = "updated Type"} ``` **Update description in MaterialDescription** ```powershell Connect-Erp -Service "http://localhost:8080/pgs/ERP/MaterialService/" $entity = Update-ERPObject -EntitySet "MaterialDescriptions" -Keys @{ "Number" = "6931";"Language" = "EN" } -Properties @{ "Description" = "changed by powerGate"} ``` In the following example we are using the public OData Services ():\ **Search for Product and update it** ```powershell Connect-ERP -Service "http://services.odata.org/V3/(S(xnnohcch2jddbn1z1ytpfni2))/OData/OData.svc/" $product = Get-ERPObject -EntitySet "Products" -Keys @{"ID"=9} Update-ERPObject -EntitySet "Products" -Keys $product._Keys -Properties @{"Rating"=9;"Price"=1.99} <# ID : 9 Name : Lemonade Description : Classic, refreshing lemonade (Single bottle) ReleaseDate : 01.01.1970 00:00:00 DiscontinuedDate : Rating : 9 Price : 1,99 #> ``` **Update description using PUT as PreferredUpdateMethod** ```powershell Connect-Erp -Service "http://localhost:8080/pgs/ERP/MaterialService/" -OnConnect { param($settings) $settings.PreferredUpdateMethod = "PUT" } $entity = Update-ERPObject -EntitySet "MaterialDescriptions" -Keys @{ "Number" = "6931";"Language" = "EN" } -Properties @{ "Description" = "change with PUT request"} ``` **Error handling, analyze the** [ WebRequestException]() **why the entity could not be updated, by using \$Error** ```powershell Connect-Erp -Service "https://services.odata.org/V3/OData/OData.svc" $entity = Update-ERPObject -EntitySet "Persons" -Keys @{"ID"=1} -Properties @{"Name"="Sepp Meißnor"} if(-not $entity){ $Error[0].Exception.StatusCode #403 $Error[0].Exception.Message #"You are connected to a read-only data session. Update operations are not permitted for your session" } ```