Azure Windows门户:无法保存图像以创建VHD

时间:2017-06-08 18:38:44

标签: powershell azure-storage publish azure-marketplace azure-management-portal

我正在尝试在Azure市场上发布我的产品。

我使用的是用于从portal.azure.com创建虚拟机的Windows 2012 R2 Datacenter。我按照运行sysprep,概括它然后创建容器的步骤进行操作。

之后,当我们运行save-azurermvmimage来捕获图片时,我得到the capture action is only supported on a virtual machine with blob based disks. please use the image resource apis to create an image from a managed virtual machine 所以我无法在容器中获取图像网址。有什么我做错了吗? 请指导!

3 个答案:

答案 0 :(得分:7)

托管磁盘与非托管磁盘不同。我们可以使用Powershell创建托管图像,但我们无法在我们的存储帐户中找到这个新图像,Azure管理托管磁盘,我们无法直接管理它。

要创建VM的托管图像,我们可以按照以下步骤操作:

运行sysprep到概括 Windows VM。(此过程deletes原始虚拟机被捕获后。在捕获Azure虚拟机的映像之前,建议使用目标虚拟机备份。)

$vmName = "myVM" 
$rgName = "myResourceGroup" 
$location = "EastUS" 
$imageName = "myImage"
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
$image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID 
New-AzureRmImage -Image $image -ImageName $imageName -ResourceGroupName $rgName

完成后,我们可以在此处找到此图片: enter image description here

有关创建托管图片的详细信息,请参阅此link

顺便说一句,我们应该使用Azure PowerShell 3.7.0或更高版本。

PS C:\Users> Get-Module -ListAvailable -Name Azure -Refresh


    Directory: C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.7.0      Azure                               {Get-AzureAutomationCertificate, Get-AzureAutomationConnec...

答案 1 :(得分:1)

@Jason Ye:我能够解决我的问题并发布。我停止使用powershell并仅使用azure portal来执行所有步骤。提供的MS文档是碎片化的,即使它们已被弃用,也会合并新的旧版本。它们的编写方式假设读者已经经历过做事。

经过大量的工作,我最终想出了这些步骤:

  1. 计算新VM Windows Server 2012 R2 Datacenter。
  2. 按照创建步骤操作,但使用非托管磁盘以管理存储帐户。跟踪您提供的所有名称,特别是VM,存储帐户名称和用户名/密码。此身份验证将在步骤5中使用。
  3. 创建后,VHD网址存储在创建的存储帐户中,可以在VM下的“磁盘”部分中看到(显示127Gib大小)。
  4. 使用门户网站上的“Connect”按钮登录VM,使用您在步骤2/3中创建VM时提供的凭据使用rdp登录VM。如果您没有看到,那么您将需要在入站规则中添加rdp端口。
  5. 登录后,检查并运行Windows所需的更新(保留可选)并安装软件并执行软件所需的任何操作。
  6. 完成此操作后,使用“通用”和“关闭”选项运行sysprep。
  7. Sysprep关闭虚拟机,将Azure门户中虚拟机的状态更改为已停止(已取消分配)。
  8. 点击图片创建图片 - >添加,如下所示。使用新资源组,在Storage Blob字段中,浏览在步骤3中创建的存储帐户。
  9. 您的存储帐户将有一个默认名称为“vhds”的容器。你的.vhd在这个文件夹里面。如果您没有看到自己的帐户,则表示您要么使用错误的名称进行检查,要么最终创建了托管磁盘。
  10. 创建映像后,从新创建的映像创建VM。在控制台中,如果单击此图像,则会出现“创建VM”选项(使用上面为该图像创建的现有资源组)。这次它是一个托管VM,因为VM是从图像创建的(在'i'部分中提到)。
  11. 您可以登录此新创建的(第二个)虚拟机并检查您的数据,如果它位于c:驱动器中的文件夹中。如果您没有看到“连接”按钮,请在入站规则中添加rdp端口。
  12. 单击门户网站中的“停止”按钮,在步骤4/5中停止VM。
  13. 下载并安装Microsoft Storage Explorer。
  14. 搜索在步骤2/3中创建的存储帐户。展开它并转到最低层次结构。点击它,在右侧菜单上,你会看到你的vhd。右键单击“获取共享访问签名”。
  15. 选中“通用...”复选框。输入当前日期前一天的开始日期和当前日期的一个月(当前时间> 7天)的到期日期。复制签名网址并保存。
  16. 现在,转到发布门户网站:https://cloudpartner.azure.com并创建商品。填写必要的字段。在SKU的选项卡中,您必须添加一个新的VM映像,其中磁盘版本可以是number.number.number格式的任何内容,OS VHD URL将是上面复制的签名URL。

答案 2 :(得分:0)

在Atihska步骤中,在Sysprep之后,机器将关闭,状态将显示为已停止但未停止(已取消分配)。对于解除分配,您需要在powershell命令下运行。

Stop-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName

Set-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName -Generalized