Public/Set-DuneResourceProvider.ps1
|
function Set-DuneResourceProvider { [CmdletBinding( SupportsShouldProcess, ConfirmImpact = 'None', DefaultParameterSetName = "Id" )] param ( [Parameter(Mandatory, ParameterSetName = "Id")] [guid]$Id, [Parameter(Mandatory, ValueFromPipeline, ParameterSetName = "Object")] [DuneResourceProvider]$ResourceProvider, [Parameter()] [string]$DisplayName, [Parameter()] [string]$Description, [Parameter()] [Environments]$DefaultEnvironment, [Parameter()] [Environments[]]$AllowedEnvironments ) begin {} process { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)" if ($PSCmdlet.ParameterSetName -eq "Id") { $ResourceProvider = Get-DuneResourceProvider -Id $ResourceProvider.Id } $PropertyUpdates = @() $ModifiedProperties = $PSBoundParameters.Keys | Where-Object { $_ -ne "ResourceProvider" } if (-not $ModifiedProperties) { return } foreach ($Item in $ModifiedProperties) { if ($Item -eq 'DefaultEnvironment') { $PSBoundParameters.$Item = $PSBoundParameters.$Item.ToString() } if ( ($ResourceProvider | Get-Member -MemberType Property).Name -contains $Item -and $PSBoundParameters.$Item -ne $ResourceProvider.$Item ) { $ResourceProvider.$Item = $PSBoundParameters.$Item $PropertyUpdates += $PSBoundParameters.$Item } } if ($PropertyUpdates.Count -gt 0) { $Body = ConvertTo-Hashtable $ResourceProvider $Uri = 'resourceproviders/{0}' -f $ResourceProvider.Id if ($PSCmdlet.ShouldProcess($($PropertyUpdates | ConvertTo-Json -Depth 16 -Compress))) { $Null = Invoke-DuneApiRequest -Uri $Uri -Method PUT -Body $Body } } } end {} } |