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

如何在PowerShell7中使用Get-AzVMImage的latest参数获取最新Azure VM镜像

问题原因与解决方法

核心原因

Get-AzVMImage cmdlet的-Version参数本身不支持传入latest作为有效值,官方文档提到的latest指代最新版本的用法,仅适用于创建虚拟机时指定镜像URN的场景,不适用于直接查询镜像的场景。

  • Azure镜像查询API要求version入参必须是真实存在的版本号字符串,因此传入latest会触发参数无效报错
  • 创建虚拟机时,Azure后端会自动解析URN中的latest占位符为当前最新的镜像版本,不需要提前查询具体版本号

对应解决方案

场景1:仅需要用最新镜像创建VM,不需要获取镜像元数据

直接在创建VM的命令中使用带latest的URN即可,无需提前调用Get-AzVMImage查询版本,示例代码:

$imageUrn = "Canonical:UbuntuServer:18.04-LTS:latest"
# 其他VM配置参数省略
New-AzVM -ResourceGroupName <你的资源组名称> -Name <虚拟机名称> -Image $imageUrn

场景2:需要提前获取最新镜像的详细元数据

你当前设想的先查询全量版本、排序取最新的方案是标准可行方案,和官方文档说明并不冲突,只是适用场景不同,示例代码:

# 查询指定SKU下的所有镜像版本,按版本号降序排序取第一条即为最新版本
$allVersions = Get-AzVMImage -Location "eastus" -PublisherName "Canonical" -Offer "UbuntuServer" -Skus "18.04-LTS" | Sort-Object -Property Version -Descending
$latestImage = $allVersions[0]
# 可直接调用$latestImage的属性获取所需信息,如版本号、Hyper-V generation等
$latestVersion = $latestImage.Version

补充说明

你之前硬编码真实版本号可以正常返回结果,是因为符合Get-AzVMImage对-Version参数的格式要求,该逻辑和创建VM时使用latest占位符的逻辑相互独立,不存在冲突。


内容的提问来源于stack exchange,提问作者darlirium

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:36:03