使用 Azure PowerShell 尋找和使用 Azure Marketplace VM 映像

警告

本文參考 CentOS,這是接近結束生命週期 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集

本文描述如何使用 Azure PowerShell 在 Azure Marketplace 中尋找 Windows VM 映像。 然後,您可以在建立 VM 時指定 Marketplace 映像和方案資訊。

您也可以使用 Azure MarketplaceAzure CLI 來瀏覽可用的映像和供應項目。

詞彙

Azure 中的 Marketplace 映像具有下列屬性:

  • 發行者:建立映像的組織。 範例:Canonical、MicrosoftWindowsServer
  • 供應項目:發行者所建立之一組相關映像的名稱。 範例:UbuntuServer、WindowsServer
  • SKU:供應項目執行個體,例如主要發佈版本。 範例:18.04-LTS、2019-Datacenter
  • 版本:映像 SKU 的版本號碼。

這些值可以個別傳遞或以映像 URN 的形式傳遞,結合以冒號 (:) 分隔的值。 例如:Publisher:Offer:Sku:Version。 您可以以 latest 取代 URN 中的版本號碼,以取得最新版的映像。

如果映像發行者有提供其他授權和購買條款,則您必須加以接受才能使用映像。 如需詳細資訊,請參閱接受購買方案條款

預設映像

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 時,請傳遞此 URN 與 -Image 參數。 您也可以使用 latest 取代 URN 中的版本號碼,以取得最新版的映像。

如果您使用 Resource Manager 範本來部署 VM,必須在 imageReference 屬性中個別設定映像參數。 請參閱範本參考

檢視購買方案屬性

Azure Marketplace 中的某些 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   : []

以下範例針對「資料科學虛擬機器 - 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,並傳入購買方案參數。 輸出會提供 Marketplace 映像的條款連結,並顯示您先前是否已接受條款。 在參數值中務必使用全小寫字母。

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。 如需搭配 PowerShell 使用 VM 組態的詳細範例,請參閱此指令碼

如果您收到有關接受映像條款的訊息,請參閱先前的接受購買方案條款一節。

使用購買方案資訊從 VHD 建立新的 VM

如果您有使用 Azure Marketplace 映像建立的現有 VHD,當您從該 VHD 建立新的 VM 時,可能需要提供購買方案資訊。

如果您仍然擁有原始 VM 或從相同映像建立的另一個 VM,您可以使用 Get-AzVM 從中取得方案名稱、發行者和產品資訊。 此範例會在 myResourceGroup 資源群組中取得名為 myVM 的 VM,然後顯示購買方案資訊。

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

如果您在刪除原始 VM 之前未取得方案資訊,您可以提出支援要求。 支援要求至少需要 VM 名稱、訂用帳戶識別碼和刪除作業的時間戳記。

若要使用 VHD 建立 VM,請參閱從特製化 VHD 建立 VM 一文,並加入一行以使用 Set-AzVMPlan 將方案資訊新增至 VM 組態,如下所示:

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

下一步

若要使用基本映像資訊透過 New-AzVM Cmdlet 快速建立虛擬機器,請參閱使用 PowerShell 來建立 Windows 虛擬機器

如需使用 Azure Marketplace 映像在 Azure Compute Gallery (先前稱為共用映像庫) 中建立自訂映像的詳細資訊,請參閱在建立映像時提供 Azure Marketplace 購買方案資訊