You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Get-AzVMImage未输出PSVirtualMachineImageDetail,如何获取VM镜像详情?

如何通过PowerShell获取Azure VM镜像的详细信息(含Name和OSDiskImage)

问题背景

执行以下PowerShell脚本尝试获取Azure VM镜像的详细信息,但仅返回PSVirtualMachineImage类型结果,无法拿到Name和OSDiskImage等核心详细字段:

$location = "swedencentral"
$publisher = "MicrosoftSQLServer" 

#Get all offers for selected publisher
$Alloffers = @(Get-AzVMImageOffer -Location $location -PublisherName $publisher | Select-Object -ExpandProperty Offer)

#Get all images for all skus of all ofers for the selected publisher
foreach ($Offer in $Alloffers) {
    $Allskus = (Get-AzVMImageSku -Location $location -PublisherName $publisher -Offer $offer | Select-Object  -ExpandProperty Skus)
    
    foreach ($sku in $Allskus) {
        $images += @(Get-AzVMImage -Location $location -PublisherName $publisher -Offer $offer -Skus $sku -Version latest)
     }
}

$images

根据官方文档定义,Get-AzVMImage应支持返回PSVirtualMachineImageDetail类型结果,但实际未获取到该类型的完整数据。

原因分析

使用-Version latest参数时,Get-AzVMImage默认返回精简的PSVirtualMachineImage对象,仅包含基础元数据;只有传入具体的版本号时,才会返回完整的PSVirtualMachineImageDetail对象,包含Name、OSDiskImage等详细字段。

解决方案

修改脚本,先获取对应SKU下的最新版本号,再用该版本号调用Get-AzVMImage获取完整详细信息:

$location = "swedencentral"
$publisher = "MicrosoftSQLServer" 
$images = @()

# 获取目标发布商下的所有Offer
$Alloffers = Get-AzVMImageOffer -Location $location -PublisherName $publisher | Select-Object -ExpandProperty Offer

foreach ($Offer in $Alloffers) {
    # 获取当前Offer下的所有SKU
    $Allskus = Get-AzVMImageSku -Location $location -PublisherName $publisher -Offer $offer | Select-Object -ExpandProperty Skus
    
    foreach ($sku in $Allskus) {
        # 获取该SKU下的所有版本,排序后取最新的版本号
        $latestVersion = Get-AzVMImage -Location $location -PublisherName $publisher -Offer $offer -Skus $sku | 
                         Sort-Object Version -Descending | 
                         Select-Object -First 1 -ExpandProperty Version
        
        # 使用具体版本号获取完整的镜像详细信息
        $imageDetail = Get-AzVMImage -Location $location -PublisherName $publisher -Offer $offer -Skus $sku -Version $latestVersion
        $images += $imageDetail
    }
}

# 筛选输出需要的核心字段
$images | Select-Object Name, OSDiskImage, PublisherName, Offer, Skus, Version

关键说明

  • 通过先获取所有版本并按版本号降序排序,拿到最新版本的字符串,再传入Get-AzVMImage,即可触发返回PSVirtualMachineImageDetail类型的完整对象。
  • OSDiskImage字段包含镜像的操作系统磁盘核心信息(如存储账户类型、磁盘大小等),Name字段对应镜像的唯一标识字符串。

内容的提问来源于stack exchange,提问作者Daniel Björk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:45:10