Skip to content

Instantly share code, notes, and snippets.

@hkarthik7
Created September 11, 2020 13:51
Show Gist options
  • Save hkarthik7/ca96a4adb056b1c42112472b578aa158 to your computer and use it in GitHub Desktop.
Save hkarthik7/ca96a4adb056b1c42112472b578aa158 to your computer and use it in GitHub Desktop.
Remove-AzureSqlBacPacFiles
function Remove-AzureSqlBacPacFiles {
[CmdletBinding()]
param (
[Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[ValidateRange(1,180)]
[int] $RetentionPeriod = 15
)
begin {
# initialise function variable
$ErrorActionPreference = "SilentlyContinue"
$functionName = $MyInvocation.MyCommand.Name
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Begin Function.."
}
process {
try {
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Getting Storage Accounts.."
$storageAccounts = Get-AzStorageAccount
foreach ($storageAccount in $storageAccounts) {
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Working with StorageAccount $($storageAccount.StorageAccountName).."
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Fetching storage account key.."
$storageAccountKey = (Get-AzStorageAccountKey `
-ResourceGroupName $storageAccount.ResourceGroupName `
-Name $storageAccount.StorageAccountName).Value[0]
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Setting storage context.."
$context = New-AzStorageContext `
-StorageAccountName $storageAccount.StorageAccountName `
-StorageAccountKey $storageAccountKey
$containers = Get-AzStorageContainer -Context $context
foreach ($container in $containers) {
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Working with Storage Account Container $($container.Name).."
$blobs = Get-AzStorageBlob -Container $container.Name -Context $container.Context | Where-Object { $_.Name -like "*.bacpac" }
if ($blobs) {
foreach ($blob in $blobs) {
if ((Get-Date "$($blob.LastModified.ToString().Split()[0]) $($blob.LastModified.ToString().Split()[1])").Date -le (Get-Date).AddDays(-$RetentionPeriod).Date) {
Write-Verbose "[$(Get-Date -Format s)] : $functionName : Deleting old bacpac file $($blob.Name).."
Remove-AzStorageBlob -Blob $blob.Name -Container $blob.ICloudBlob.Container.Name -Context $context -Force
}
}
}
}
}
}
catch {
Write-Host "[$(Get-Date -Format s)] $functionName : Error at line $($_.InvocationInfo.ScriptLineNumber): $($_.Exception.Message)" -ForegroundColor Red
}
}
end {
Write-Verbose "[$(Get-Date -Format s)] : $functionName : End Function.."
}
}
Remove-AzureSqlBacPacFiles -Verbose
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment