如何使用PowerShell查询Azure虚拟机的磁盘类型(SSD/HDD)
如何用PowerShell查询Azure虚拟机的磁盘类型(SSD/HDD)
嘿,我完全懂你的困扰——从VM对象的StorageProfile.OsDisk里确实看不到直接的SSD/HDD标识,因为磁盘的类型信息是存在托管磁盘的SKU属性里的,而VM对象本身只存储了磁盘的关联ID,没有包含完整的磁盘属性。下面我给你一步步讲怎么获取这个信息:
核心思路
VM的StorageProfile里的磁盘对象只包含了托管磁盘的Resource ID,我们需要通过这个ID单独调用Get-AzDisk命令来获取磁盘的完整信息,其中的Sku.Name字段就包含了磁盘类型的关键信息。
具体操作步骤
1. 获取目标VM对象
首先用Get-AzVM拿到你要查询的虚拟机对象:
$azureVM = Get-AzVM -ResourceGroupName "你的资源组名称" -Name "你的虚拟机名称"
2. 提取OS磁盘的Resource ID
从VM的StorageProfile里取出OS磁盘的托管磁盘ID:
$osDiskResourceId = $azureVM.StorageProfile.OsDisk.ManagedDisk.Id
3. 查询OS磁盘的完整信息并判断类型
用Get-AzDisk根据ID获取磁盘对象,然后通过Sku.Name判断是SSD还是HDD:
$osDisk = Get-AzDisk -ResourceId $osDiskResourceId # 输出磁盘名称和类型 Write-Host "OS磁盘名称:$($osDisk.Name)" Write-Host "磁盘类型:" $( if ($osDisk.Sku.Name -match "SSD") { "SSD" } elseif ($osDisk.Sku.Name -eq "Standard_LRS") { "HDD" } else { "未知类型(可能是Ultra Disk等特殊类型)" } )
4. 批量查询数据磁盘的类型
如果你的VM有数据磁盘,也可以用同样的方法遍历查询:
foreach ($dataDisk in $azureVM.StorageProfile.DataDisks) { $dataDiskResourceId = $dataDisk.ManagedDisk.Id $disk = Get-AzDisk -ResourceId $dataDiskResourceId Write-Host "`n数据磁盘名称:$($disk.Name)" Write-Host "磁盘类型:" $( switch -Wildcard ($disk.Sku.Name) { "*SSD*" { "SSD" } "Standard_LRS" { "HDD" } default { "特殊磁盘类型" } } ) }
完整脚本示例
把上面的步骤整合起来,一个可以直接运行的脚本:
# 配置你的资源组和VM名称 $resourceGroupName = "MyResourceGroup" $vmName = "MyVM" # 获取VM对象 $azureVM = Get-AzVM -ResourceGroupName $resourceGroupName -Name $vmName # 处理OS磁盘 $osDiskId = $azureVM.StorageProfile.OsDisk.ManagedDisk.Id $osDisk = Get-AzDisk -ResourceId $osDiskId Write-Host "=== OS 磁盘信息 ===" Write-Host "名称:$($osDisk.Name)" Write-Host "类型:" $( switch ($osDisk.Sku.Name) { "Standard_LRS" { "HDD(标准)" } "StandardSSD_LRS" { "SSD(标准)" } "Premium_LRS" { "SSD(高级)" } "UltraSSD_LRS" { "SSD(Ultra)" } default { "其他类型:$($osDisk.Sku.Name)" } } ) # 处理数据磁盘 if ($azureVM.StorageProfile.DataDisks.Count -gt 0) { Write-Host "`n=== 数据磁盘信息 ===" foreach ($dataDisk in $azureVM.StorageProfile.DataDisks) { $disk = Get-AzDisk -ResourceId $dataDisk.ManagedDisk.Id Write-Host "`n名称:$($disk.Name)" Write-Host "类型:" $( switch ($disk.Sku.Name) { "Standard_LRS" { "HDD(标准)" } "StandardSSD_LRS" { "SSD(标准)" } "Premium_LRS" { "SSD(高级)" } "UltraSSD_LRS" { "SSD(Ultra)" } default { "其他类型:$($disk.Sku.Name)" } } ) } }
补充说明:Azure磁盘SKU对应关系
Azure托管磁盘的SKU名称直接对应磁盘类型:
Standard_LRS:标准HDD磁盘StandardSSD_LRS:标准SSD磁盘Premium_LRS:高级SSD磁盘(用于需要高性能的场景)UltraSSD_LRS:Ultra SSD磁盘(低延迟、高IOPS的场景)
内容的提问来源于stack exchange,提问作者Xrk
相关产品推荐
相关产品推荐

