Functions/BloxOneDDI/Set-B1Object.ps1
function Set-B1Object { <# .SYNOPSIS Generic Wrapper for updating existing objects within the CSP (Cloud Services Portal) .DESCRIPTION This is a Generic Wrapper for updating objects within the CSP (Cloud Services Portal). It is recommended this is used via Pipeline .PARAMETER _ref The base URL of the object to update .PARAMETER id The id of the object to update .PARAMETER Data The data to update .EXAMPLE This example will update the comment/description against multiple DNS Records $Records = Get-B1Object -Product 'BloxOne DDI' -App DnsConfig -Endpoint /dns/record -Filters @('absolute_zone_name~"mydomain.corp." and type=="a"') -Fields comment foreach ($Record in $Records) { $Record.comment = "Updated Comment" } $Records | Set-B1Object .EXAMPLE This example will update the multiple DHCP Options against multiple Subnets $Subnets = Get-B1Object -product 'BloxOne DDI' -App Ipamsvc -Endpoint /ipam/subnet -tfilter '("BuiltWith"=="ibPS")' -Fields name,dhcp_options,tags foreach ($Subnet in $Subnets) { $Subnet.dhcp_options = @( @{ "type"="option" "option_code"=(Get-B1DHCPOptionCode -Name "routers").id "option_value"="10.10.100.254" } @{ "type"="option" "option_code"=(Get-B1DHCPOptionCode -Name "domain-name-servers").id "option_value"="10.1.1.100,10.3.1.100" } ) } $Subnets | Set-B1Object .FUNCTIONALITY BloxOneDDI .FUNCTIONALITY Core #> param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $Data, [Parameter( ValueFromPipelineByPropertyName = $true, Mandatory = $true )] [String]$_ref, [Parameter( ValueFromPipelineByPropertyName = $true, Mandatory = $true )] [String]$id ) process { $Data.PSObject.Properties.Remove('_ref') $Data.PSObject.Properties.Remove('id') $Results = Query-CSP -Method PATCH -Uri "$($_ref)/$($id)" -Data ($Data | ConvertTo-Json -Depth 10 -Compress) | Select-Object -ExpandProperty result -EA SilentlyContinue -WA SilentlyContinue if ($Results) { return $Results } } } |