查詢統計ARM模型下VHD實際計費大小

查詢統計ARM模型下VHD實際計費大小

第一列是路徑,LeaseState狀態可以看出VHD是否被虛擬機掛載了,可以參考清理無用的VHD

腳本運行截圖:


可以看到有兩個沒在使用的vhd,而第三個vhd是未掛載的空白數據盤vhd

#------------------------------------------------------------------------------    
# User own the risk, otherwise exit.
# 
# Azure PowerShell Version:  3.6.0
#
# Create by Zeno. 
#------------------------------------------------------------------------------  

$storages = Get-AzureRmStorageAccount;
$TotalCostSizeGB = 0

foreach ($storage in $storages)
{
  # get storage containers
  $containers = (Get-AzureStorageContainer -Context $storage.Context).Name

   foreach ($container in $containers)
   {
     #get blobs under all containers
     $blobs = Get-AzureStorageBlob -Context $storage.Context -Container $container

     foreach ($blob in $blobs)
     {
       # check if blob is PageBlob
       if ($Blob.Name.EndsWith("vhd"))
       {
           $blobSizeInBytes = 0
           $blob.ICloudBlob.GetPageRanges() | ForEach-Object { $blobSizeInBytes += $_.EndOffset - $_.StartOffset }
           $path = $blob.Context.StorageAccountName + "/" + $blob.ICloudBlob.Container.Name + "/" + $blob.Name #+ "               "
           $blob | select @{n="BlobPath_Storage_Container_Blob               "; e={$path}},`
                          @{n="DisplaySizeGB"; e={[System.Math]::Truncate($blob.Length /1GB)}},`
                          @{n="CostSizeGB"; e={"{0:f2}" -f ($blobSizeInBytes /1GB)}},`
                          #@{n="BlobType"; e={$blob.BlobType}},`
                          @{n="LeaseState"; e={$blob.ICloudBlob.Properties.LeaseState}}
           $TotalCostSizeGB += $blobSizeInBytes
       }
     }
   }
}   

 Write-Host ("`n`tTotal cost size calculated is {0:F2}GB." -f ($TotalCostSizeGB / 1GB)) -ForegroundColor Green


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章