【问题标题】:How to sum up Cores with Powershell?如何用 Powershell 总结 Cores?
【发布时间】:2021-04-01 09:28:10
【问题描述】:

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

预期行为(例如):

?> 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。

【问题讨论】:

  • 这个问题有更新吗?

标签: azure powershell azure-virtual-machine


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我是这样解决的

    $TotalCores = $null
    $ResourceGroup = "myawesomerg"
    $TotalWorkers = (Get-AzVM -ResourceGroupName $ResourceGroup -Status | Where-Object { ( 
                    $_.ProvisioningState -eq "Succeeded" ) })
    
    foreach ($Worker in $TotalWorkers) {
        $VMSize = (Get-AzVM -ResourceGroupName $ResourceGroup -Name $Worker.Name).HardwareProfile.VmSize
        $Cores = (Get-AzVMSize -location $Location | Where-Object { $_.name -eq $VMSize }).NumberOfCores
        $TotalCores += $Cores
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 2017-03-11
      • 2015-05-18
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多