Skip to content

Commit

Permalink
Add script for removing worm storage accounts (#4959)
Browse files Browse the repository at this point in the history
  • Loading branch information
benbp authored Jan 18, 2023
1 parent adb94eb commit b4685f9
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions eng/scripts/Remove-WormStorageAccounts.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Helper script for removing storage accounts with WORM that sometimes get leaked from live tests not set up to clean
# up their resource policies

[CmdletBinding(SupportsShouldProcess=$True)]
param(
[string]$GroupPrefix
)

# Be a little defensive so we don't delete non-live test groups via naming convention
if (!$groupPrefix -or !$GroupPrefix.StartsWith('rg-')) {
Write-Error "The -GroupPrefix parameter must start with 'rg-'"
exit 1
}

$groups = Get-AzResourceGroup | ? { $_.ResourceGroupName.StartsWith($GroupPrefix) } | ? { $_.ProvisioningState -ne 'Deleting' }

foreach ($group in $groups) {
Write-Host "========================================="
$accounts = Get-AzStorageAccount -ResourceGroupName $group.ResourceGroupName
if ($accounts) {
foreach ($account in $accounts) {
if ($WhatIfPreference) {
Write-Host "What if: Removing $($account.StorageAccountName) in $($account.ResourceGroupName)"
} else {
Write-Host "Removing $($account.StorageAccountName) in $($account.ResourceGroupName)"
}
$ctx = New-AzStorageContext -StorageAccountName $account.StorageAccountName
$ctx | Get-AzStorageContainer | Get-AzStorageBlob | Remove-AzStorageBlob -Force
# Use AzRm cmdlet as deletion will only work through ARM with the immutability policies defined on the blobs
$ctx | Get-AzStorageContainer | % { Remove-AzRmStorageContainer -Name $_.Name -StorageAccountName $ctx.StorageAccountName -ResourceGroupName $group.ResourceGroupName -Force }
Remove-AzStorageAccount -StorageAccountName $account.StorageAccountName -ResourceGroupName $account.ResourceGroupName -Force
}
}
if ($WhatIfPreference) {
Write-Host "What if: Removing resource group $($group.ResourceGroupName)"
} else {
Remove-AzResourceGroup -ResourceGroupName $group.ResourceGroupName -Force -AsJob
}
}

0 comments on commit b4685f9

Please sign in to comment.