你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure PowerShell 查找并使用 Azure 市场 VM 映像

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

本文介绍如何使用 Azure PowerShell 在 Azure 市场中查找 VM 映像。 然后,可以在创建 VM 时指定市场映像和计划信息。

还可以使用 Azure 市场Azure CLI 浏览可用的映像和产品/服务。

术语

Azure 中的市场映像具有以下属性:

  • 发布者:创建映像的组织。 示例:Canonical、MicrosoftWindowsServer
  • 产品/服务:发布者创建的一组相关映像的名称。 示例:UbuntuServer、WindowsServer
  • SKU:产品/服务的实例,例如分发的主要版本。 示例:18.04-LTS、2019-Datacenter
  • 版本:映像 SKU 的版本号。

可以单独传递这些值,或将这些值作为映像 URN 传递,并将它们用冒号 (:) 隔开。 例如:发布者:产品/服务:SKU:版本 。 可将 URN 中的版本号替换为 latest,以使用最新版本的映像。

如果映像发布服务器提供其他许可和购买条款,则必须先接受这些许可和条款才能使用映像。 有关详细信息,请参阅接受购买计划条款

默认映像

Powershell 提供了多个预定义的映像别名,使资源创建过程更简单。 Windows 或 Linux 操作系统的资源有不同的映像。 多个 Powershell cmdlet(如 New-AzVMNew-AzVmss)允许输入别名作为参数。 例如:

$rgname = <Resource Group Name>
$location = <Azure Region>
$vmName = "v" + $rgname
$domainNameLabel = "d" + $rgname
$securePassword = <Password> | ConvertTo-SecureString -AsPlainText -Force
$username = <Username>
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
New-AzVM -ResourceGroupName $rgname -Location $location -Name $vmName -image CentOS85Gen285Gen2 -Credential $credential -DomainNameLabel $domainNameLabel

Linux 映像别名及其详细信息如下:

Alias                     Architecture    Offer                         Publisher               Sku                                 Urn                                                                            Version
-----------------------   --------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------ ---------
CentOS85Gen2              x64             CentOS                        OpenLogic               8_5-gen2                            OpenLogic:CentOS:8_5-gen2:latest                                               latest
Debian11                  x64             Debian-11                     Debian                  11-backports-gen2                   Debian:debian-11:11-backports-gen2:latest                                      latest
FlatcarLinuxFreeGen2      x64             flatcar-container-linux-free  kinvolk                 stable                              kinvolk:flatcar-container-linux-free:stable:latest                             latest
OpenSuseLeap154Gen2       x64             opensuse-leap-15-4            SUSE                    gen2                                SUSE:opensuse-leap-15-4:gen2:latest                                            latest
RHELRaw8LVMGen2           x64             RHEL                          RedHat                  8-lvm-gen2                          RedHat:RHEL:8-lvm-gen2:latest                                                  latest
SLES                      x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                   latest
Ubuntu2204                x64             0001-com-ubuntu-server-jammy  Canonical               22_04-lts-gen2                      Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest                   latest

Windows 映像别名及其详细信息如下:

Alias                   Architecture    Offer                         Publisher               Sku                                 Urn                                                                              Version
----------------------- --------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------   ---------
Win2022Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2022-Datacenter                     MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest                      latest
Win2022AzureEditionCore x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest   latest
Win10                   x64             Windows                       MicrosoftVisualStudio   Windows-10-N-x64                    MicrosoftVisualStudio:Windows:Windows-10-N-x64:latest                            latest
Win2019Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                      latest
Win2016Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                      latest
Win2012R2Datacenter     x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                   latest
Win2012Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                      latest

列出映像

如果要使用默认未提供的特定映像,可以使用 PowerShell 缩小映像列表的范围。 替换以下变量的值以满足你的需求。

  1. 使用 Get-AzVMImagePublisher 列出映像发布者。

    $locName="<location>"
    Get-AzVMImagePublisher -Location $locName | Select PublisherName
    
  2. 对于给定的发布者,请使用 Get-AzVMImageOffer 列出其产品/服务。

    $pubName="<publisher>"
    Get-AzVMImageOffer -Location $locName -PublisherName $pubName | Select Offer
    
  3. 对于给定的发布者和产品/服务,请使用 Get-AzVMImageSku 列出可用的 SKU。

    $offerName="<offer>"
    Get-AzVMImageSku -Location $locName -PublisherName $pubName -Offer $offerName | Select Skus
    
  4. 对于 SKU,请使用 Get-AzVMImage 列出映像的版本。

    $skuName="<SKU>"
    Get-AzVMImage -Location $locName -PublisherName $pubName -Offer $offerName -Sku $skuName | Select Version
    

    如果要使用最新的映像,而不是特定的较旧版本,也可以使用 latest

现在可以将所选发布者、产品/服务、SKU 和版本合并到 URN 中(由“:”分隔的值)。 使用 New-AzVM cmdlet 创建 VM 时,使用 -Image 参数传递此 URN。 还可以将 URN 中的版本号替换为 latest,以获取最新版本的映像。

如果使用资源管理器模板部署 VM,必须在 imageReference 属性中单独设置映像参数。 请参阅模板参考

查看购买计划属性

Azure 市场中的某些 VM 映像具有其他许可条款和购买条款,你必须接受这些条款,然后才能以编程方式部署这些映像。 对于每个订阅,都需要接受映像的条款。

若要查看映像的购买计划信息,请运行 Get-AzVMImage cmdlet。 如果输出中的 PurchasePlan 属性不是 null,则映像有条款,在以编程方式部署前需要接受该条款。

例如,Windows Server 2016 Datacenter 映像没有附加条款,因此,PurchasePlan 信息为 null

$version = "2016.127.20170406"
Get-AzVMImage -Location $locName -PublisherName $pubName -Offer $offerName -Skus $skuName -Version $version

输出与以下输出类似:

Id               : /Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftWindowsServer/ArtifactTypes/VMImage/Offers/WindowsServer/Skus/2016-Datacenter/Versions/2019.0.20190115
Location         : westus
PublisherName    : MicrosoftWindowsServer
Offer            : WindowsServer
Skus             : 2019-Datacenter
Version          : 2019.0.20190115
FilterExpression :
Name             : 2019.0.20190115
OSDiskImage      : {
                     "operatingSystem": "Windows"
                   }
PurchasePlan     : null
DataDiskImages   : []

以下示例显示了适用于 Data Science Virtual Machine - Windows 2016 映像的类似命令,该映像具有以下 PurchasePlan 属性:nameproductpublisher。 某些映像还具有 promotion code 属性。 若要部署此映像,请参阅以下部分,以接受条款并启用编程式部署。

Get-AzVMImage -Location "westus" -PublisherName "microsoft-ads" -Offer "windows-data-science-vm" -Skus "windows2016" -Version "0.2.02"

输出与以下输出类似:

Id               : /Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-ads/ArtifactTypes/VMImage/Offers/windows-data-science-vm/Skus/windows2016/Versions/19.01.14
Location         : westus
PublisherName    : microsoft-ads
Offer            : windows-data-science-vm
Skus             : windows2016
Version          : 19.01.14
FilterExpression :
Name             : 19.01.14
OSDiskImage      : {
                     "operatingSystem": "Windows"
                   }
PurchasePlan     : {
                     "publisher": "microsoft-ads",
                     "name": "windows2016",
                     "product": "windows-data-science-vm"
                   }
DataDiskImages   : []

若要查看许可条款,请使用 Get-AzMarketplaceterms cmdlet 并传入购买计划参数。 输出会提供指向市场映像条款的链接,并显示是否以前已接受条款。 请务必使用字母全部小写的参数值。

Get-AzMarketplaceterms -Publisher "microsoft-ads" -Product "windows-data-science-vm" -Name "windows2016"

输出将类似于以下内容:

Publisher         : microsoft-ads
Product           : windows-data-science-vm
Plan              : windows2016
LicenseTextLink   : https://storelegalterms.blob.core.windows.net/legalterms/3E5ED_legalterms_MICROSOFT%253a2DADS%253a24WINDOWS%253a2DDATA%253a2DSCIENCE%253a2DVM%253a24WINDOWS2016%253a24OC5SKMQOXSED66BBSNTF4XRCS4XLOHP7QMPV54DQU7JCBZWYFP35IDPOWTUKXUC7ZAG7W6ZMDD6NHWNKUIVSYBZUTZ245F44SU5AD7Q.txt
PrivacyPolicyLink : https://www.microsoft.com/EN-US/privacystatement/OnlineServices/Default.aspx
Signature         : 2UMWH6PHSAIM4U22HXPXW25AL2NHUJ7Y7GRV27EBL6SUIDURGMYG6IIDO3P47FFIBBDFHZHSQTR7PNK6VIIRYJRQ3WXSE6BTNUNENXA
Accepted          : False
Signdate          : 1/25/2019 7:43:00 PM

接受购买计划条款

使用 Set-AzMarketplaceterms cmdlet 接受或拒绝条款。 对于映像的每个订阅,只需接受条款一次。 请务必使用字母全部小写的参数值。

$agreementTerms=Get-AzMarketplaceterms -Publisher "microsoft-ads" -Product "windows-data-science-vm" -Name "windows2016"

Set-AzMarketplaceTerms -Publisher "microsoft-ads" -Product "windows-data-science-vm" -Name "windows2016" -Terms $agreementTerms -Accept
Publisher         : microsoft-ads
Product           : windows-data-science-vm
Plan              : windows2016
LicenseTextLink   : https://storelegalterms.blob.core.windows.net/legalterms/3E5ED_legalterms_MICROSOFT%253a2DADS%253a24WINDOWS%253a2DDATA%253a2DSCIENCE%253a2DV
                    M%253a24WINDOWS2016%253a24OC5SKMQOXSED66BBSNTF4XRCS4XLOHP7QMPV54DQU7JCBZWYFP35IDPOWTUKXUC7ZAG7W6ZMDD6NHWNKUIVSYBZUTZ245F44SU5AD7Q.txt
PrivacyPolicyLink : https://www.microsoft.com/EN-US/privacystatement/OnlineServices/Default.aspx
Signature         : XXXXXXK3MNJ5SROEG2BYDA2YGECU33GXTD3UFPLPC4BAVKAUL3PDYL3KBKBLG4ZCDJZVNSA7KJWTGMDSYDD6KRLV3LV274DLBXXXXXX
Accepted          : True
Signdate          : 2/23/2018 7:49:31 PM

从市场映像创建新 VM

如果已有要使用的映像的相关信息,可以将该信息传递到 Set-AzVMSourceImage cmdlet,以将映像信息添加到 VM 配置。 请参阅后续部分,了解如何搜索和列出市场中可用的映像。

某些付费映像还要求使用 Set-AzVMPlan 提供购买计划信息。

...

$vmConfig = New-AzVMConfig -VMName "myVM" -VMSize Standard_D1

# Set the Marketplace image
$offerName = "windows-data-science-vm"
$skuName = "windows2016"
$version = "19.01.14"
$vmConfig = Set-AzVMSourceImage -VM $vmConfig -PublisherName $publisherName -Offer $offerName -Skus $skuName -Version $version

# Set the Marketplace plan information, if needed
$publisherName = "microsoft-ads"
$productName = "windows-data-science-vm"
$planName = "windows2016"
$vmConfig = Set-AzVMPlan -VM $vmConfig -Publisher $publisherName -Product $productName -Name $planName

...

然后将 VM 配置与其他配置对象一起传递给 New-AzVM cmdlet。 有关将 VM 配置与 PowerShell 配合使用的详细示例,请参阅此脚本

如果收到有关接受映像条款的消息,请参阅前面的接受购买计划条款部分。

使用购买计划信息从 VHD 创建新的 VM

如果你有使用 Azure 市场映像创建的现有 VHD,则在从该 VHD 创建新的 VM 时,可能需要提供购买计划信息。

如果你仍有原始 VM 或从同一映像创建的其他 VM,则可以使用 Get-AzVM 从其中获取计划名称、发布者和产品信息。 此示例获取 myResourceGroup 资源组中名为 myVM 的 VM,然后显示购买计划信息 。

$vm = Get-azvm `
   -ResourceGroupName myResourceGroup `
   -Name myVM
$vm.Plan

如果在删除原始 VM 之前未获得计划信息,则可提交支持请求。 支持请求至少需要 VM 名称、订阅 ID 和删除操作的时间戳。

若要使用 VHD 创建 VM,请参阅从专用 VHD 创建 VM 一文,并添加一行,使用 Set-AzVMPlan 将计划信息添加到 VM 配置,如下所示:

$vmConfig = Set-AzVMPlan `
   -VM $vmConfig `
   -Publisher "publisherName" `
   -Product "productName" `
   -Name "planName"

后续步骤

若要使用基本映像信息通过 New-AzVM cmdlet 快速创建虚拟机,请参阅使用 PowerShell 创建 Windows 虚拟机

要详细了解如何使用 Azure 市场图像在 Azure Compute Gallery(先前称为“共享映像库”)创建自定义图像,请参阅在创建图像时提供 Azure 市场购买计划信息