Public/Remove-DuneResourceProviderConfig.ps1

    <#
    .SYNOPSIS
    Remove a resource provider configuration entry.

    .DESCRIPTION
    Deletes a named configuration entry for a `DuneResourceProvider`. Specify the provider by `ResourceProviderId` or by passing a `DuneResourceProvider` object via pipeline. The cmdlet supports `ShouldProcess`.

    .PARAMETER Name
    The name/key of the configuration entry to remove.

    .PARAMETER ResourceProviderId
    The GUID Id of the resource provider that owns the configuration entry.

    .PARAMETER ResourceProvider
    A `DuneResourceProvider` object supplied via pipeline.

    .EXAMPLE
    PS> Remove-DuneResourceProviderConfig -Name "connectionString" -ResourceProviderId 3d8f6b5a-...
    Removes the named configuration entry from the specified provider.

    .EXAMPLE
    PS> Get-DuneResourceProvider -Name "acme" | Remove-DuneResourceProviderConfig -Name "connectionString"
    Pipeline example removing a config entry from a provider object.
    #>

function Remove-DuneResourceProviderConfig {
    [CmdletBinding(
        SupportsShouldProcess,
        ConfirmImpact = 'Low',
        DefaultParameterSetName = 'Id'
    )]
    param (
        [Parameter(Mandatory, Position = 0)]
        [string]$Name,

        [Parameter(Mandatory, ParameterSetName = "Id")]
        [guid]$ResourceProviderId,

        [Parameter(Mandatory, ParameterSetName = "ResourceProvider", ValueFromPipeline)]
        [DuneResourceProvider]$ResourceProvider
    )

    begin {
        Write-Debug "$($MyInvocation.MyCommand)|begin"
        $UriFormatString = "resourceproviders/{0}/config/{1}" # 0=ResourceProviderId / 1=ConfigEntryNanme
    }

    process {
        Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)"

        if ($ResourceProviderId) { $ResourceProvider = Get-DuneResourceProvider -Id $ResourceProviderId }

        $Url = $UriFormatString -f $ResourceProvider.Id, $Name
        if ($PSCmdlet.ShouldProcess($ResourceProvider.Name)) {
            $Null = Invoke-DuneApiRequest $Url -Method DELETE
        }
    }

    end {
        Write-Debug "$($MyInvocation.MyCommand)|end"
    }
}