Public/Remove-Space.ps1
function Remove-Space { [CmdletBinding( ConfirmImpact = 'High', SupportsShouldProcess = $true )] [OutputType()] [System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssignments', '')] param ( [Parameter( Mandatory = $true )] [URi]$apiURi, [Parameter( Mandatory = $true )] [PSCredential]$Credential, [Parameter( Position = 0, Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true )] [Alias('Key')] [string[]]$SpaceKey, [switch]$Force # TODO: Probably an extra param later to loop checking the status & wait for completion? ) BEGIN { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Function started" $resourceApi = "$apiURi/space/{0}" if ($Force) { Write-Debug "[$($MyInvocation.MyCommand.Name)] -Force was passed. Backing up current ConfirmPreference [$ConfirmPreference] and setting to None" $oldConfirmPreference = $ConfirmPreference $ConfirmPreference = 'None' } } PROCESS { Write-Debug "[$($MyInvocation.MyCommand.Name)] ParameterSetName: $($PsCmdlet.ParameterSetName)" Write-Debug "[$($MyInvocation.MyCommand.Name)] PSBoundParameters: $($PSBoundParameters | Out-String)" if (($_) -and -not($_ -is [ConfluencePS.Space] -or $_ -is [string])) { $message = "The Object in the pipe is not a Space." $exception = New-Object -TypeName System.ArgumentException -ArgumentList $message Throw $exception } $iwParameters = @{ Uri = "" Method = 'Delete' Credential = $Credential } foreach ($_space in $SpaceKey) { $iwParameters["Uri"] = $resourceApi -f $_space If ($PSCmdlet.ShouldProcess("Space key $_space")) { $response = Invoke-Method @iwParameters # Successful response provides a "longtask" status link # (add additional code here later to check and/or wait for the status) } } } END { if ($Force) { Write-Debug "[$($MyInvocation.MyCommand.Name)] Restoring ConfirmPreference to [$oldConfirmPreference]" $ConfirmPreference = $oldConfirmPreference } Write-Verbose "[$($MyInvocation.MyCommand.Name)] Function ended" } } |