param ( [string] $subscriptionId = "", [string] $resourcegroupName = "", [string] $storageAccountName = "", [bool] $containersOnly = $false, [string[]] $excludedContainers = @() ) if (("" -eq $subscriptionId) -or ("" -eq $resourcegroupName) -or ("" -eq $storageAccountName)) { throw "Parameter(s) missing." } else { Write-Host "Processing subscription [$subscriptionId], resource group [$resourcegroupName], storage account [$storageAccountName]" } # .\AzureStoragebloblist.ps1 -subscriptionId "7feeb150-9ee0-4aea-992a-5f3a89d933e6" -resourcegroupName "results-activity" -storageAccountName "effactivity" # .\AzureStoragebloblist.ps1 -subscriptionId "7feeb150-9ee0-4aea-992a-5f3a89d933e6" -resourcegroupName "Results" -storageAccountName "myeffectoryresults" # .\AzureStoragebloblist.ps1 -subscriptionId "a134faf1-7a89-4f2c-8389-06d00bd5e2a7" -resourcegroupName "Default-Storage-WestEurope" -storageAccountName "ecestore" # .\AzureStoragebloblist.ps1 -subscriptionId "1ab2120c-947c-40e2-96c7-460d3e9659de" -resourcegroupName "sa-backups" -storageAccountName "archivecommvault" # .\AzureStoragebloblist.ps1 -subscriptionId "1ab2120c-947c-40e2-96c7-460d3e9659de" -resourcegroupName "sa-backups" -storageAccountName "backupcommvault" # .\AzureStoragebloblist.ps1 -subscriptionId "2a07dfa7-69ee-4608-b2d5-14124fcccc31" -resourcegroupName "questionnaire-server-weu" -storageAccountName "questionnairestoreweu" # .\AzureStoragebloblist.ps1 -subscriptionId "a134faf1-7a89-4f2c-8389-06d00bd5e2a7" -resourcegroupName "Default-Storage-WestEurope" -storageAccountName "mailingstore" # .\AzureStoragebloblist.ps1 -subscriptionId "a134faf1-7a89-4f2c-8389-06d00bd5e2a7" -resourcegroupName "Default-Storage-WestEurope" -storageAccountName "projectcenter" # .\AzureStoragebloblist.ps1 -subscriptionId "a134faf1-7a89-4f2c-8389-06d00bd5e2a7" -resourcegroupName "effectorycore" -storageAccountName "corerightsaggregator" -ContainersOnly $true # .\AzureStoragebloblist.ps1 -subscriptionId "3190b0fd-4a66-4636-a204-5b9f18be78a6" -resourcegroupName "authorization" -storageAccountName "authorizationv2" # .\AzureStoragebloblist.ps1 -subscriptionId "86945e42-fa5a-4bbc-948f-3f5407f15d3e" -resourcegroupName "hierarchy" -storageAccountName "hierarchyeff" # .\AzureStoragebloblist.ps1 -subscriptionId "f9ab522b-4895-492d-b8a8-ca6e1f60c2a8" -resourcegroupName "participant-exchange" -storageAccountName "participantexchangev2" -excludedContainers "leases","insights-metrics-pt1m","insights-logs-partitionkeystatistics","insights-logs-dataplanerequests","insights-logs-controlplanerequests","event-attachments","command-handlers","aggregates-streaming","aggregates","`$logs","`$blobchangefeed" # .\AzureStoragebloblist.ps1 -subscriptionId "14c2354d-45a9-4e0f-98ff-be58cdbcddc7" -resourcegroupName "ec-automation-prod" -storageAccountName "stecautomationprod" # .\AzureStoragebloblist.ps1 -subscriptionId "14c2354d-45a9-4e0f-98ff-be58cdbcddc7" -resourcegroupName "ec-measurement" -storageAccountName "stecmeasurementprod" # .\AzureStoragebloblist.ps1 -subscriptionId "2a07dfa7-69ee-4608-b2d5-14124fcccc31" -resourcegroupName "questionnaire-server-weu" -storageAccountName "questionnairedataweu" # .\AzureStoragebloblist.ps1 -subscriptionId "54794e27-b714-4346-81bc-05eae7ccb5a5" -resourcegroupName "question-management-api-weu" -storageAccountName "qmprojectionsweu" -excludedContainers "`$logs","`$blobchangefeed" # .\AzureStoragebloblist.ps1 -subscriptionId "7feeb150-9ee0-4aea-992a-5f3a89d933e6" -resourcegroupName "Results" -storageAccountName "myeffectoryresults" -excludedContainers "`$logs","`$blobchangefeed", "attachments", "azure-webjobs-hosts", "azure-webjobs-secrets", "azure-webjobs-dashboard", "azure-webjobs-hosts", "azure-webjobs-secrets", "hierarchydatesettings-leases", "projectcalculations-leases","resultscleanup-applease","resultscleanup-leases","resultsgroupscorecalculator-leases","testhubname-leases" class BlobCheck { [string] $SubscriptionId = "" [string] $SubscriptionName = "" [string] $ResourcegroupName = "" [string] $StorageAccountName = "" [string] $ContainerName = "" [string] $BlobName = "" [string] $LastModifiedDate = "" } [int] $maxCount = 100000 $containerToken = $null $blobToken = $null [string] $date = Get-Date -Format "yyyy-MM-dd HHmm" $fileName = ".\$date - $storageAccountName - bloblist.csv" $subscription = Set-AzContext -SubscriptionId $subscriptionId $storageAccount = Get-AzStorageAccount -ResourceGroupName $resourcegroupName -Name $storageAccountName if ($containersOnly -eq $true) { do { [BlobCheck[]]$Result = @() $containers = Get-AzStorageContainer -Context $storageAccount.Context -MaxCount $maxCount -ContinuationToken $containerToken if ($excludedContainers.Length -gt 0) { $containers = $containers | Where-Object { $excludedContainers -notcontains $_.Name } } foreach ($container in $containers) { [BlobCheck] $blobCheck = [BlobCheck]::new() $blobCheck.SubscriptionId = $subscription.Subscription.Id $blobCheck.SubscriptionName = $subscription.Subscription.Name $blobCheck.ResourcegroupName = $resourcegroupName $blobCheck.StorageAccountName = $storageAccountName $blobCheck.ContainerName = $container.Name $blobCheck.BlobName = "" $blobCheck.LastModifiedDate = $container.LastModified $Result += $blobCheck } if ($Result.Length -gt 0) { $Result | Export-Csv -Path $fileName -NoTypeInformation -Append } if ($containers.Length -le 0) { Break; } $containerToken = $containers[$containers.Count -1].ContinuationToken; } while ($null -ne $containerToken) } elseif ($containersOnly -eq $false) { do { $containers = Get-AzStorageContainer -Context $storageAccount.Context -MaxCount $maxCount -ContinuationToken $containerToken if ($excludedContainers.Length -gt 0) { $containers = $containers | Where-Object { $excludedContainers -notcontains $_.Name } } foreach ($container in $containers) { do { [BlobCheck[]]$Result = @() $blobList = Get-AzStorageBlob -Container $Container.Name -Context $storageAccount.Context -MaxCount $maxCount -ContinuationToken $blobToken #-Prefix "projects" if ($blobList.Length -le 0) { Break; } foreach($blob in $blobList) { [BlobCheck] $blobCheck = [BlobCheck]::new() $blobCheck.SubscriptionId = $subscription.Subscription.Id $blobCheck.SubscriptionName = $subscription.Subscription.Name $blobCheck.ResourcegroupName = $resourcegroupName $blobCheck.StorageAccountName = $storageAccountName $blobCheck.ContainerName = $container.Name $blobCheck.BlobName = $blob.Name $blobCheck.LastModifiedDate = $blob.LastModified $Result += $blobCheck } $Result | Export-Csv -Path $fileName -NoTypeInformation -Append $blobToken = $blobList[$blobList.Count -1].ContinuationToken; } while ($null -ne $blobToken) } if ($containers.Length -le 0) { Break; } $containerToken = $containers[$containers.Count -1].ContinuationToken; } while ($null -ne $containerToken) }