GinShell.Azure/Public/Remove-GsAzureSnapshot.ps1
|
function Remove-GsAzureSnapshot { <# .SYNOPSIS Deletes one or more Azure snapshots after revoking access. .PARAMETER Snapshot One or more Azure snapshot objects. .EXAMPLE Remove-GsAzureSnapshot -Snapshot $snapshots #> [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory)] [object[]]$Snapshot ) foreach ($snap in $Snapshot) { $snapName = $snap.Name $resourceGroup = $snap.ResourceGroupName if (-not $PSCmdlet.ShouldProcess($snapName, "Delete snapshot in '$resourceGroup'")) { continue } try { Write-GsLog -Message "Revoking access for snapshot '$snapName'" -Type Info Revoke-AzSnapshotAccess -SnapshotName $snapName -ResourceGroupName $resourceGroup -ErrorAction SilentlyContinue Write-GsLog -Message "Deleting snapshot '$snapName' in resource group '$resourceGroup'" -Type Action Remove-AzSnapshot -SnapshotName $snapName -ResourceGroupName $resourceGroup -Force -ErrorAction Stop Write-GsLog -Message "Successfully deleted snapshot '$snapName'" -Type Success } catch { Write-GsLog -Message "Failed to delete snapshot '$snapName': $($_.Exception.Message)" -Type Error } } } |