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

Azure Windows Portal: Unable to Save Image in order to create VHD

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

我正在使用 windows 2012 R2 数据中心,用于从 portal.azure.com 创建虚拟机。我遵循了 运行 系统准备、概括它然后创建容器的步骤。

之后当我们运行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 所以我无法在容器中获取图像 url。我做错了什么吗? 请指导!

托管磁盘不同于非托管磁盘。我们可以使用Powershell创建一个托管镜像,但是在我们的存储账户中找不到这个新镜像,托管磁盘由Azure管理,我们不能直接管理它。

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

运行 sysprep 到 generalize windows 虚拟机。(此过程 deletes 原始虚拟机 captured.Prior要捕获 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

完成后,我们可以在这里找到这张图片:

有关创建托管图像的更多信息,请参阅此 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...

@Jason Ye:我能够解决我的问题并发布。我停止使用 powershell,只使用 azure portal 来完成所有步骤。提供的 MS 文档是零散的,新旧版本被组合在一起,即使它们已被弃用。它们的编写方式假设 reader 已经体验过做事。

所以在完成大量工作之后,我最终想出了这些步骤:

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

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

Stop-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName

Set-AzureRMVM -ResourceGroupName ResourceGroup -Name VMName -Generalized