Update Azure Storage Blob Properties with PowerShell

Update Azure Storage Blob Properties with PowerShell

In the past days I uploaded a lot of files to an Azure Blob Storage using the Azure Storage Explorer.

Unfortunately, I forgot to specify system properties such as cache content when uploading to Azure Storage Explorer. Currently the only option here is the Azure CLI and the “upload-batch” command. The files were already uploaded in the meantime, so I didn’t want to do the upload again.

Unfortunately, there is currently no command in the Azure Storage Explorer and the Azure CLI to update system properties such as cache content with a one-liner.

So I wrote myself a PowerShell script that reads all the blob storage items, filters for file extensions and updates the cache content.

 1# Storage Settings
 2$storageAccount = "__storage account__";
 3$containerName = "__container name__";
 4
 5# Blob Update Settings
 6$contentCacheControl = "public, max-age=2592000"; # 30 days
 7$extensions = @(".gif", ".jpg", ".jpeg", ".ico", ".png", ".css", ".js");
 8
 9# Read all blobs
10$blobs = az storage blob list --account-name $storageAccount --container-name $containerName --num-results * --output json | ConvertFrom-Json
11
12# iterate all blobs
13foreach($blob in $blobs)
14{
15    # use name as identifier
16    $blobName = $blob.name;
17
18    # get extension
19    $extension = [System.IO.Path]::GetExtension($blobName).ToLower();
20 
21    # update blob if extension is affected
22    if($extensions.Contains($extension))
23    {
24        az storage blob update --account-name $storageAccount --container-name $containerName --name $blobName --content-cache-control $contentCacheControl
25        Write-Host "Updated $blobName" 
26    }
27}

Azure CLI - Upload Batch

During my research I also found the upload-batch command, with which I could have specified this directly during the upload.

1az storage blob upload-batch --account-name $storageAccount --destination $containerName --source C:\your\local\folder --content-cache-control "public, max-age=2592000"

Comments

Twitter Facebook LinkedIn WhatsApp