如何使用 Powershell 7 的 Get-AzVMImage 命令获取最新版本

5

我正在尝试使用Azure Powershell 7命令来获取Canonical UbuntuServer 18.04-LTS的最新版本。

以下是我的查询示例:

>> Get-AzVMImage -Location "eastus" -PublisherName "Canonical" -Offer "UbuntuServer" -Skus "18.04-LTS" -Version "latest"

身份验证后,我尝试运行该命令,但出现以下错误:

Get-AzVMImage:
Line |
   2 |  Get-AzVMImage -Location "eastus" -PublisherName "Canonical" -Offer "U …
     |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | The value of parameter version is invalid.
ErrorCode: InvalidParameter
ErrorMessage: The value of parameter version is invalid.
ErrorTarget: version
StatusCode: 400
ReasonPhrase: Bad Request
OperationID : 3cf54862-47c7-4092-97e9-20ae6556f37c

然而,如果我将-Version标志硬编码为一个已知的版本号,就像这样:

>> Get-AzVMImage -Location "eastus" -PublisherName "Canonical" -Offer "UbuntuServer" -Skus "18.04-LTS" -Version "18.04.202109280"

我收到了一个成功的响应:

Location         : eastus
PublisherName    : Canonical
Offer            : UbuntuServer
Skus             : 18.04-LTS
Version          : 18.04.202109280
FilterExpression :
Name             : 18.04.202109280
HyperVGeneration : V1
OSDiskImage      : {
                     "operatingSystem": "Linux"
                   }
PurchasePlan     : null
DataDiskImages   : []

这篇关于在Azure上查找和使用市场镜像的文章《使用Azure PowerShell查找和使用Azure Marketplace VM镜像》中提到:“...对于SKU,可以使用Get-AzVMImage列出该镜像的版本。如果您想使用最新的镜像而不是特定的旧版本,则还可以使用latest。”
作为替代方案,文章还提到您可以使用URN格式:“... 这些值可以单独传递或作为图像URN传递,将值用冒号(:)分隔组合在一起。例如:发布者:优惠:SKU:版本。您可以使用latest替换URN中的版本号,以使用镜像的最新版本。” 有人知道我需要更改什么才能只使用-Version "latest"吗? 我考虑先查询所有版本并获取列表中的最后一个版本。然后,我会将$version变量设置为最后一个版本号。但是这似乎与Azure文档中建议的相反。

1
我们在本地环境中进行了测试,尝试使用 get-azvmimage 命令通过将 version 值设置为 latest 或 urn 值 Canonical:UbuntuServer:18.04-LTS:latest 来拉取 ubuntu server 18.04-lts 的“最新”版本镜像,正如文档中所建议的那样,但无论是在 PowerShell 版本 5.1 还是 7 中都失败了。 - VenkateshDodda
1
或者,您可以使用以下 Azure CLI 命令来拉取 Ubuntu Server 18.04-LTS 的最新镜像版本,使用 URN 参数,如此 图片 所示。az vm image show --location westus --urn Canonical:UbuntuServer:18.04-LTS:latest (或) Get-AzVMImage -Location eastus -PublisherName Canonical -Offer UbuntuServer -Skus 18.04-LTS | Select-Object version -Last 1 - VenkateshDodda
@VenkateshDodda-MT 感谢您在本地环境中确认。我只尝试了获取“UbuntuServer:18.04-LTS”的“最新”版本的测试。我的猜测是,对于其他 SKU 也会失败,但没有测试就无法确定。而且,如果我运行“az vm image show --location westus --urn Canonical:UbuntuServer:18.04-LTS:latest”,我确实会收到一个成功的 Azure 响应,并获得该映像数据。 - darlirium
Get-AzVMImageSku命令没有[-URN]参数。 - Ayan Mullick
1个回答

0

我会使用以下PowerShell命令(假设一些变量已经获取,例如Gallery Name和Image Definition:

$version = Get-AzGalleryImageVersion -ResourceGroupName $ResourceGroup -GalleryName $computeGallery.Name -GalleryImageDefinitionName $imageDefinition.Name | Select-Object -Property Name | Sort-Object -Bottom 1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接