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