I have been trying to write script in Powershell for Azure Automation Aaccount.
It should be able to:
- Get lists of Fileshares in Storage Account
- Get total Quota used for every Fileshare
- Get Used capacity and display all those data into screen.
This is what I got so far:
# Import the required Azure modules
Import-Module Az.Accounts
Import-Module Az.Storage
Import-Module Az.Resources
# # Authenticate to Azure
# $connectionName = "AzureRunAsConnection"
# $servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
# Connect-AzAccount -ServicePrincipal -Tenant $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
# Variables
$env:AZURE_STORAGE_CONNECTION_STRING = "zzzzzzz"
$resourceGroupName = "vvvvv"
$storageAccountName = "bbbbb"
$subscriptionId = "mmmm"
$resourceGroupName = "nnnn"
$storageAccountName = "iiiii"
$storageAccountKey = "wwwwww"
# Manage identity check
$connectionString = "DefaultEndpointsProtocol=https;AccountName=$storageAccountName;AccountKey=$storageAccountKey;EndpointSuffix=core.windows.net"
# Get the storage account context
$storageAccount = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
# $storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName
$storageContext = $storageAccount.Context
# Get the list of file shares
$fileShares = az storage share list --account-name $storageAccountName --query "[].name" -o tsv
# Loop through each file share and retrieve quota and usage
foreach ($shareName in $fileShares) {
# Get the file share properties using Azure CLI
$shareProperties = az storage share show --name $shareName --account-name $storageAccountName --query "{quota:properties.quota, usage:properties.usage}" -o json | ConvertFrom-Json
$quotaGB = $shareProperties.quota
$usedCapacityBytes = $shareProperties.usage
$usedCapacityGB = [math]::Round($usedCapacityBytes / 1GB, 2)
# Output the results
Write-Output "File Share: $shareName"
Write-Output "Quota (GB): $quotaGB"
Write-Output "Used Capacity (GB): $usedCapacityGB"
Write-Output "-----------------------------"
}
Problem is I cannot get Used capacity to screen. It always says :0.
Over investigation I have found that:
Azure CLI and Azure Storage PowerShell modules do not directly provide
used capacity for file shares through a simple API call.To achieve this, you might need to:
List the files and directories in the file share. Calculate the total
size of all files and directories.
Can you help to modify above script? Shoul I use other method like Python for this?