eng-vm-size-collecting.ps1
<#PSScriptInfo
.VERSION 1.0 .GUID b2ffdb6b-46cb-4214-a0d5-79449f8e36ea .AUTHOR jileeon@gmail.com .COMPANYNAME .COPYRIGHT .TAGS .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .DESCRIPTION Storing new VM sizes to Azure Table Storage via Azure Automation #> #Requires -Modules AzureRM.Automation, AzureRM.Profile, AzureRM.Resources, AzureRm.Storage, Azure.Storage, AzureRM.Compute, AzureRmStorageTable # Config # It is required to execute this script and you can change values you want. $RESOURCE_GROUP_NAME = "eng-vm-size-collector" # A resource group name of a storage account $STORAGE_ACCOUNT_NAME = "azurevmsize" # A storage account name $STORAGE_TABLE_NAME = "VMSizeList" # A table name to update VM sizes # Login by the connection of this automation account. $conn = Get-AutomationConnection -Name "AzureRunAsConnection" Add-AzureRmAccount ` -ServicePrincipal ` -TenantId $conn.TenantId ` -ApplicationId $conn.ApplicationId ` -CertificateThumbprint $conn.CertificateThumbprint | out-null # Getting latest VM size data $vm_size_table = Get-AzureStorageTableTable ` -resourceGroup $RESOURCE_GROUP_NAME ` -tableName $STORAGE_TABLE_NAME ` -storageAccountName $STORAGE_ACCOUNT_NAME $vm_size_list_orig = Get-AzureStorageTableRowAll -table $vm_size_table $newly_added = New-Object System.Collections.ArrayList # Getting locations $resources = Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Compute $location_list = $resources.ResourceTypes.Where{($_.ResourceTypeName -eq 'virtualMachines')}.Locations # Adding new VM size foreach ($location in $location_list) { $vm_size_list_by_region = Get-AzureRmVmSize -Location $location foreach($vm_size in $vm_size_list_by_region) { if ( (($vm_size_list_orig | where-object {$_.Name -eq $vm_size.Name}) -eq $null) -and (($newly_added | where-object {$_.Name -eq $vm_size.Name}) -eq $null) ) { Add-StorageTableRow ` -table $vm_size_table ` -partitionKey "VMSize" ` -rowKey $vm_size.Name ` -property @{ "Name"=$vm_size.Name; "NumberOfCores"=$vm_size.NumberOfCores; "OSDiskSizeInMB"=$vm_size.OSDiskSizeInMB; "ResourceDiskSizeInMB"=$vm_size.ResourceDiskSizeInMB; "MemoryInMB"=$vm_size.MemoryInMB; "MaxDataDiskCount"=$vm_size.MaxDataDiskCount } | out-null $newly_added.add($vm_size) | out-null } } } |