Cálculo del tamaño de contenedores de blobs con PowerShell
El script calcula el tamaño de todos los contenedores de Azure Blob Storage en una cuenta de almacenamiento.
Este ejemplo requiere Azure PowerShell. Ejecute Get-Module -ListAvailable Az
para encontrar la versión.
Si necesita instalarla o actualizarla, consulte el artículo sobre cómo instalar el módulo de Azure PowerShell.
Ejecute el cmdlet Connect-AzAccount para conectarse a Azure.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Importante
Este script de PowerShell proporciona un tamaño estimado de los contenedores y no debe usarse para cálculos de facturación. Si quiere un script que calcule el tamaño del contenedor de cara a la facturación, consulte Calculate the size of a Blob storage container for billing purposes (Cálculo del tamaño de un contenedor de Blob Storage con fines de facturación).
Script de ejemplo
<#
.SYNOPSIS
Calculates the total size of blobs in all containers in a specified Azure storage account.
.DESCRIPTION
Before running this script, ensure you have:
- A storage account created
- At least one container in the storage account
- Uploaded some blobs into the container
.EXAMPLE
.\Get-AzureStorageAccountBlobSize.ps1 -StorageAccountName mystorageaccount -ResourceGroupName myResourceGroup
.NOTES
This script incurs transactional costs for Azure requests.
#>
[CmdletBinding()]
param (
[ValidateNotNullOrEmpty()]
[string]$ResourceGroupName = '<name-of-your-resource-group>',
[ValidateNotNullOrEmpty()]
[string]$StorageAccountName = '<name-of-your-storage-account>'
)
$containerstats = @()
# Get a reference to the storage account and the context.
$storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName
$Ctx = $storageAccount.Context
$container_continuation_token = $null
do {
$containers = Get-AzStorageContainer -Context $Ctx -MaxCount 5000 -ContinuationToken $container_continuation_token
$container_continuation_token = $null
if ($containers -ne $null) {
$container_continuation_token = $containers[$containers.Count - 1].ContinuationToken
for ([int] $c = 0; $c -lt $containers.Count; $c++) {
$container = $containers[$c].Name
Write-Verbose "Processing container : $container"
$total_usage = 0
$total_blob_count = 0
$soft_delete_usage = 0
$soft_delete_count = 0
$version_usage = 0
$version_count =
$snapshot_count = 0
$snapshot_usage = 0
$blob_continuation_token = $null
do {
$blobs = Get-AzStorageBlob -Context $Ctx -IncludeDeleted -IncludeVersion -Container $container -ConcurrentTaskCount 100 -MaxCount 5000 -ContinuationToken $blob_continuation_token
$blob_continuation_token = $null
if ($blobs -ne $null) {
$blob_continuation_token = $blobs[$blobs.Count - 1].ContinuationToken
for ([int] $b = 0; $b -lt $blobs.Count; $b++) {
$total_blob_count++
$total_usage += $blobs[$b].Length
if ($blobs[$b].IsDeleted) {
$soft_delete_count++
$soft_delete_usage += $blobs[$b].Length
}
if ($blobs[$b].SnapshotTime -ne $null) {
$snapshot_count++
$snapshot_usage+= $blobs[$b].Length
}
if ($blobs[$b].VersionId -ne $null) {
$version_count++
$version_usage += $blobs[$b].Length
}
}
if ($blob_continuation_token -ne $null) {
Write-Verbose "Blob listing continuation token = {0}".Replace("{0}",$blob_continuation_token.NextMarker)
}
}
} while ($blob_continuation_token -ne $null)
Write-Verbose "Calculated size of $container = $total_usage with soft_delete usage of $soft_delete_usage"
$containerstats += [PSCustomObject] @{
Name = $container
TotalBlobCount = $total_blob_count
TotalBlobUsageinGB = $total_usage/1GB
SoftDeletedBlobCount = $soft_delete_count
SoftDeletedBlobUsageinGB = $soft_delete_usage/1GB
SnapshotCount = $snapshot_count
SnapshotUsageinGB = $snapshot_usage/1GB
VersionCount = $version_count
VersionUsageinGB = $version_usage/1GB
}
}
}
if ($container_continuation_token -ne $null) {
Write-Verbose "Container listing continuation token = {0}".Replace("{0}",$container_continuation_token.NextMarker)
}
} while ($container_continuation_token -ne $null)
Write-Host "Total container stats"
$containerstats | Format-Table -AutoSize
Limpieza de la implementación
Ejecute el siguiente comando para quitar el grupo de recursos, el contenedor y todos los recursos relacionados.
Remove-AzResourceGroup -Name bloblisttestrg
Explicación del script
Este script usa los siguientes comandos para calcular el tamaño del contenedor de Blob Storage. Cada elemento de la tabla incluye vínculos a la documentación específica del comando.
Get-Help | Notas |
---|---|
Get-AzStorageAccount | Obtiene una cuenta de Storage especificada o todas las cuentas de Storage de un grupo de recursos o la suscripción. |
Get-AzStorageContainer | Especifica los contenedores de almacenamiento. |
Get-AzStorageBlob | Enumera los blobs de un contenedor. |
Pasos siguientes
Si quiere un script que calcule el tamaño del contenedor de cara a la facturación, consulte Calculate the size of a Blob storage container for billing purposes (Cálculo del tamaño de un contenedor de Blob Storage con fines de facturación).
Para obtener más información sobre el módulo de Azure PowerShell, consulte la documentación de Azure PowerShell.
Encontrará más ejemplos de script de PowerShell en Ejemplos de PowerShell para Azure Storage.