如何用 Powershell 总结 Cores?
How to sum up Cores with Powershell?
我在 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 = (Get-AzVMSize -ResourceGroupName $ResourceGroup -VMName $Worker.Name).HardwareProfile.VmSize
无法获取正确的 SKU。
要获取特定 VM 的大小,您需要使用 Get-AzVM
而不是 Get-AzVMSize
。
$Size = (Get-AzVM -ResourceGroupName "xxx" -VMName "xxx").HardwareProfile.VmSize
我已经这样解决了
$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
}
我在 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 = (Get-AzVMSize -ResourceGroupName $ResourceGroup -VMName $Worker.Name).HardwareProfile.VmSize
无法获取正确的 SKU。
要获取特定 VM 的大小,您需要使用 Get-AzVM
而不是 Get-AzVMSize
。
$Size = (Get-AzVM -ResourceGroupName "xxx" -VMName "xxx").HardwareProfile.VmSize
我已经这样解决了
$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
}