如何通过Azure Cloud Shell获取虚拟机vCPU数量(优化现有脚本)
解决方法
要给虚拟机报告添加vCPU数量,你需要通过Get-AzureRmVMSize命令获取对应VM大小的规格参数,从中提取核心数。以下是修改后的完整脚本:
$Subscriptions = Get-AzureRmSubscription $Report = ForEach ($Subscription in $Subscriptions) { $SubscriptionName = $Subscription.Name Set-AzureRmContext -SubscriptionName "$SubscriptionName" | Out-Null $RGs = Get-AzureRMResourceGroup foreach ($RG in $RGs) { $VMs = Get-AzureRmVM -ResourceGroupName $RG.ResourceGroupName foreach ($VM in $VMs) { $VMDetail = Get-AzureRmVM -ResourceGroupName $RG.ResourceGroupName -Name $VM.Name -Status $VMStatusDetail = $VMDetail.Statuses.DisplayStatus -match "^VM .*$" # 获取当前VM大小对应的vCPU数量 $VMSizeInfo = Get-AzureRmVMSize -Location $VM.Location | Where-Object { $_.Name -eq $VM.HardwareProfile.VMSize } $vCPUCount = $VMSizeInfo.NumberOfCores New-Object psobject -Property @{ "SubscriptionName" = $SubscriptionName "VMName" = $VM.Name "VMStatus" = "$VMStatusDetail" "OSType" = $VM.StorageProfile.OSDisk.OSType "OSVersion" = $Vm.StorageProfile.ImageReference.Sku "ResourceGroup" = $RG.ResourceGroupName "Location" = $VM.Location "Tags" = $VM.Tags "Tier" = $VM.HardwareProfile.VMSize "vCPUCount" = $vCPUCount # 新增vCPU数量字段 } } } } $Report | Export-Csv "vmreport.csv" -Force -NoTypeInformation download vmreport.csv
关键修改说明
- 添加
Get-AzureRmVMSize命令,根据VM所在区域和规格名称,筛选出对应的SKU配置信息 - 从返回的规格信息中提取
NumberOfCores属性,作为vCPU数量值 - 在输出的自定义对象中新增
vCPUCount字段,将获取到的核心数写入报告
如果运行时遇到权限问题,确保你的Cloud Shell账号拥有Microsoft.Compute/virtualMachines/read和Microsoft.Compute/virtualMachineSizes/read的权限。
内容的提问来源于stack exchange,提问作者Athmos
相关产品推荐
相关产品推荐

