使用 Azure PowerShell 尋找和使用 Azure Marketplace VM 映像
適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集
本文描述如何使用 Azure PowerShell 在 Azure Marketplace 中尋找 Windows VM 映像。 然後,您可以在建立 VM 時指定 Marketplace 映像和方案資訊。
您也可以使用 Azure Marketplace或 Azure 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-AzVM
和 New-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 Ubuntu2204 -Credential $credential -DomainNameLabel $domainNameLabel
Linux 映像別名及其詳細資料如下:
Alias Architecture Offer Publisher Sku Urn Version
----------------------- -------------- ---------------------------- ---------------------- ---------------------------------- ------------------------------------------------------------------------------ ---------
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
----------------------- -------------- ---------------------------- ---------------------- ---------------------------------- ------------------------------------------------------------------------------ ---------
Win2022AzureEdition x64 WindowsServer MicrosoftWindowsServer 2022-datacenter-azure-edition MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition: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 來縮小映像清單的範圍。 請取代以下變數的值,來滿足需求。
使用 Get-AzVMImagePublisher 列出映像發行者。
$locName="<location>" Get-AzVMImagePublisher -Location $locName | Select PublisherName
針對指定的發行者,使用 Get-AzVMImageOffer 列出其供應項目。
$pubName="<publisher>" Get-AzVMImageOffer -Location $locName -PublisherName $pubName | Select Offer
針對指定發行者和供應項目,使用 Get-AzVMImageSku 列出可用的 SKU。
$offerName="<offer>" Get-AzVMImageSku -Location $locName -PublisherName $pubName -Offer $offerName | Select Skus
針對 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
屬性:name
、product
及 publisher
。 有些映像也有 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 購買方案資訊。