RpB
RpB

Reputation: 315

Is there an Azure powershell cmdlet to get cores, cpu of an ARM VM in a subscription

I am trying to get the list of ARM VM's in a subscription using Get-AzureRmVM and their instance sizes using the HardwareProfile.VmSize object. Is there a way to get the #of Cpu, #of Cores etc. for each vm using a cmdlet ( like in classic using the Get-AzureRoleSize cmdlet) ?

Upvotes: 2

Views: 6888

Answers (2)

Gill-Bates
Gill-Bates

Reputation: 679

Here the complete solution if you want to get the Total Cores of multiple VMs:

# Calculating total Amount of Cores
Write-Output "Calculating the total Cores of VMs ..."
try {
    $TotalCores = $null
    $Location = "westeurope"
    $Cores = $null
    $TotalVMs = (Get-AzVM -Status | Where-Object { $_.ProvisioningState -eq "Succeeded" }) | Sort-Object -Property Name

    foreach ($VM in $TotalVMs) {
        Write-Output "Checking $($Vm.Name) ..."
        $VMSize = (Get-AzVM -Name $VM.Name).HardwareProfile.VmSize
        $Cores = (Get-AzVMSize -location $Location | Where-Object { $_.name -eq $VMSize }).NumberOfCores
        $TotalCores += $Cores
    }
    Write-Output "Wow! Found '$TotalCores' Cores ..."
}
catch {
    $ErrorMsg = "[ERROR] while calculating the total CPU Cores: $($_.Exception.Message)!"
    Write-Error -Message $ErrorMsg
}

Upvotes: 0

Jason Ye
Jason Ye

Reputation: 13974

Do you mean use command to get information like this?

PS C:\User> $size = (Get-AzureRmVM -ResourceGroupName ubuntu -Name vm1).HardwareProfile.VmSize
PS C:\Users> get-azurermvmsize -location eastus | ?{ $_.name -eq $size }

Name            NumberOfCores MemoryInMB MaxDataDiskCount OSDiskSizeInMB ResourceDiskSizeInMB
----            ------------- ---------- ---------------- -------------- --------------------
Standard_DS1_v2             1       3584                2        1047552                 7168

Upvotes: 3

Related Questions