Public/Remove-DuneResourceProvider.ps1
|
<# .SYNOPSIS Remove a resource provider. .DESCRIPTION Deletes a `DuneResourceProvider` identified by `Name`, `Id`, or a pipeline-provided `DuneResourceProvider` object. Use `-IncludeChildren` to remove associated resource groups before deleting the provider. .PARAMETER Name The name of the resource provider to remove (Name parameter set). .PARAMETER Id The GUID Id of the resource provider to remove (Id parameter set). .PARAMETER ResourceProvider A `DuneResourceProvider` object supplied via pipeline. .PARAMETER IncludeChildren When specified, removes resource groups under the provider before deleting the provider. .EXAMPLE PS> Remove-DuneResourceProvider -Name "acme-provider" -IncludeChildren Prompts and removes the named resource provider and its resource groups. .EXAMPLE PS> Get-DuneResourceProvider -Id 3d8f6b5a-... | Remove-DuneResourceProvider Pipeline example removing a resource provider object. #> function Remove-DuneResourceProvider { [CmdletBinding( SupportsShouldProcess, ConfirmImpact = 'High', DefaultParameterSetName = 'Id' )] param ( [Parameter(Mandatory, ParameterSetName = "Name", Position = 0)] [string]$Name, [Parameter(Mandatory, ParameterSetName = "Id")] [guid]$Id, [Parameter(Mandatory, ParameterSetName = "ResourceProvider", ValueFromPipeline)] [DuneResourceProvider]$ResourceProvider, [Parameter()] [switch]$IncludeChildren ) begin { Write-Debug "$($MyInvocation.MyCommand)|begin" $Uri = "resourceproviders" } process { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)" switch ($PSCmdlet.ParameterSetName) { 'Name' { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($Name)" $ResourceProvider = Get-DuneResourceProvider -Name $Name } 'Id' { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($Id)" $ResourceProvider = Get-DuneResourceProvider -Id $Id } 'ResourceProvider' { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($ResourceProvider.Id)" } Default { return } } $Url = $("{0}/{1}" -f $Uri, $ResourceProvider.Id) if ($PSCmdlet.ShouldProcess($ResourceProvider.Name)) { if ($IncludeChildren) { $ResourceProvider | Get-DuneResourceGroup | Remove-DuneResourceGroup -IncludeChildren } $Null = Invoke-DuneApiRequest $Url -Method DELETE } } end { Write-Debug "$($MyInvocation.MyCommand)|end" } } |