如果您在请求中包含计划信息,则可能会发生这种情况。通过添加它,它迫使系统购买不存在的东西。这可以通过使用以下 powershell 命令进行验证:
$pubName = 'MicrosoftWindowsServer'
$offerName = 'WindowsServer'
$skuName = '2016-Datacenter'
$version = '2016.127.20180315'
Get-AzureRMVMImage -Location westeurope -Publisher $pubName -Offer $offerName -Skus $skuName -Version $version
如您所见,输出显示不需要通过 PurchasePlan 属性提供计划信息:
Id : /Subscriptions/5e747971-92b4-41ac-963a-188c55951695/Providers/Microsoft.Compute/Locations/westeurope/Publishers/MicrosoftWindowsServer/ArtifactTypes/V
MImage/Offers/WindowsServer/Skus/2016-Datacenter/Versions/2016.127.20180315
Location : westeurope
PublisherName : MicrosoftWindowsServer
Offer : WindowsServer
Skus : 2016-Datacenter
Version : 2016.127.20180315
FilterExpression :
Name : 2016.127.20180315
OSDiskImage : {
"operatingSystem": "Windows"
}
PurchasePlan : null
DataDiskImages : []
如果您尝试使该脚本部署可能需要或不需要购买计划的虚拟机,您可以在脚本中使用以下方法:
获取镜像的最新版本号:
$AzureImageSku = Get-AzureRmVMImage -Location westeurope -PublisherName "MicrosoftWindowsServer" ` -Offer "WindowsServer" -Skus "2016-Datacenter" $AzureImageSku = $AzureImageSku | Sort-Object Version -Descending #put the latest first $AzureImageSku[0] #Newest2016-Datacenter
使用 Get-AzureRmImage cmdlet 检查是否需要计划
- 只有在需要计划时,才使用此处详述的方法设置计划信息:https ://docs.microsoft.com/en-us/azure/virtual-machines/windows/cli-ps-findimage#deploy-an-image-与市场条款