首页 > 解决方案 > 如何用 Powershell 总结 Cores?

问题描述

我在 Azure 中有一堆虚拟机,想计算内核总数。

预期行为(例如):

?> Get-TotalCores
?> 200

这就是代码:

function Get-TotalCores {

    $TotalCores = $null
    $TotalWorkers = Get-AzVM -ResourceGroupName $ResourceGroup -Status | Where-Object { ( `
                $_.Name -notlike $MasterVM -and `
                $_.ProvisioningState -eq "Succeeded" ) }

    foreach ($Worker in $TotalWorkers) {
        $Size = (Get-AzVMSize -ResourceGroupName $ResourceGroup -VMName $Worker.Name).HardwareProfile.VmSize
        $TotalCores += (Get-AzVMSize -location $Location | Where-Object { $_.Name -eq $Size }).NumberOfCores
    }
    return $TotalCores
}

但我的 foreach 循环无法获得正确的 SKU-Size。看起来

$Size = (Get-AzVMSize -ResourceGroupName $ResourceGroup -VMName $Worker.Name).HardwareProfile.VmSize

无法获取正确的 SKU。

标签: azurepowershellazure-virtual-machine

解决方案


要获取特定 VM 的大小,您需要使用Get-AzVM而不是Get-AzVMSize.

$Size = (Get-AzVM -ResourceGroupName "xxx" -VMName "xxx").HardwareProfile.VmSize

在此处输入图像描述


推荐阅读