Public/Invoke-DuneResourceProviderInitialization.ps1

<#
.SYNOPSIS
Initialize a resource provider.

.DESCRIPTION
Invokes the initialization endpoint for a resource provider. Provide either a `DuneResourceProvider` object via pipeline or the resource provider id string.

.PARAMETER ResourceProvider
A `DuneResourceProvider` object; pipeline input is supported. When provided, the provider id is taken from this object.

.PARAMETER ResourceProviderId
The id (string) of the resource provider to initialize.

.EXAMPLE
PS> Invoke-DuneResourceProviderInitialization -ResourceProviderId "provider-guid"
Initialize the resource provider identified by the given id.

.EXAMPLE
PS> Get-DuneResourceProvider -Name "azure" | Invoke-DuneResourceProviderInitialization
Pipeline example using the `ResourceProvider` parameter set.
#>

function Invoke-DuneResourceProviderInitialization {
    [CmdletBinding(DefaultParameterSetName = "ResourceProvider")]
    param (
        [Parameter(ParameterSetName = "ResourceProvider", ValueFromPipeline)]
        [DuneResourceProvider]$ResourceProvider,

        [Parameter(ParameterSetName = "ResourceProviderId")]
        [string]$ResourceProviderId
    )

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

    process {
        Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)"
        if ($PSCmdlet.ParameterSetName -eq 'ResourceProvider') { $ResourceProviderId = $ResourceProvider.Id }
        Invoke-DuneApiRequest -Uri "resourceproviders/$($ResourceProviderId)/initialize" -Method POST
    }

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