GinShell.Azure/Public/Remove-GsAzureSnapshot.ps1

function Remove-GsAzureSnapshot {
    param (
        [Parameter(Mandatory = $true)]
        [object[]]$Snapshot
    )

    foreach ($snap in $Snapshot) {
        try {
            $snapName = $snap.Name
            $resourceGroup = $snap.ResourceGroupName

            Write-GsLog -Message "Revoking access for snapshot '$snapName'" -Type Info
            Revoke-AzSnapshotAccess -SnapshotName $snapName -ResourceGroupName $resourceGroup

            Write-GsLog -Message "Deleting snapshot '$snapName' in resource group '$resourceGroup'" -Type Action
            Remove-AzSnapshot -SnapshotName $snapName -ResourceGroupName $resourceGroup -Force

            Write-GsLog -Message "Successfully deleted snapshot '$snapName'" -Type Success
        }
        catch {
            Write-GsLog -Message "Failed to delete snapshot '$($snap.Name)': $($_.Exception.Message)" -Type Error
        }
    }
}