What you could do is get the most recent modified container from the LastModified
property, then check if this timestamp is less than the current date minus 90 days. We would need to check both the container level and blob level LastModified properties.
Set-AzContext -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
foreach ($storageAccount in Get-AzStorageAccount) {
$storageAccountName = $storageAccount.StorageAccountName
$resourceGroupName = $storageAccount.ResourceGroupName
$storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName).Value[0]
$context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
$containers = Get-AzStorageContainer -Context $context
$deleteStorageAccount = $false
foreach ($container in $containers) {
if ($container.LastModified.DateTime -lt (Get-Date).AddDays(-90)) {
$deleteStorageAccount = $true
break
}
$blobs = Get-AzStorageBlob -Container $container.Name -Context $context -IncludeDeleted
foreach ($blob in $blobs) {
if ($blob.LastModified.DateTime -lt (Get-Date).AddDays(-90)) {
$deleteStorageAccount = $true
break
}
}
}
if ($deleteStorageAccount) {
Remove-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Force -WhatIf
}
}
Since this action could be extremely harmful, you can run Remove-AzStorageAccount
with -WhatIf
to see what storage accounts will be deleted before deleting them for real.