上传通用化 Windows VHD 并使用它在 Azure 中创建新的 VM

适用于:✔️ Windows VM

本文逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure、从该 VHD 创建映像,然后从该映像创建新 VM。 可以上传从本地虚拟化工具或其他云导出的 VHD。 对新的 VM 使用托管磁盘可以简化 VM 管理,在将 VM 置于可用性集中时提供更好的可用性。

有关示例脚本,请参阅将 VHD 上传到 Azure 并创建新的 VM 的示例脚本

开始之前

使用 Sysprep 通用化源 VM

需要先对 VM 运行 Sysprep(如果尚未这样做),然后再将 VHD 上传到 Azure。 Sysprep 将删除所有个人帐户信息及其他某些数据,并准备好要用作映像的计算机。 有关 Sysprep 的详细信息,请参阅 Sysprep 概述

确保 Sysprep 支持计算机上运行的服务器角色。 有关详细信息,请参阅 Sysprep Support for Server Roles(Sysprep 对服务器角色的支持)。

重要

如果计划在首次将 VHD 上传到 Azure 之前运行 Sysprep,请确保先准备好 VM

  1. 登录到 Windows 虚拟机。

  2. 以管理员身份打开“命令提示符”窗口。

  3. 删除 panther 目录 (C:\Windows\Panther)。

  4. 将目录切换到 %windir%\system32\sysprep,然后运行 sysprep.exe

  5. 在“系统准备工具”对话框中,选择“进入系统全新体验(OOBE)”,确保已选中“通用化”复选框。

  6. 在“关机选项”中选择“关机”。

  7. 选择“确定”。

    Start Sysprep

  8. 在 Sysprep 完成时,它会关闭虚拟机。 不要重新启动 VM。

上传 VHD

现在可以直接将 VHD 上传到托管磁盘中。 有关说明,请参阅使用 Azure PowerShell 将 VHD 上传到 Azure

将 VHD 上传到托管磁盘后,需要使用 Get-AzDisk 获取托管磁盘。

# Sign in the Azure China Cloud
Connect-AzAccount -Environment AzureChinaCloud

$disk = Get-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'myDiskName'

创建映像

从通用化 OS 托管磁盘创建托管映像。 将以下值替换为自己的信息。

首先,设置一些变量:

$location = 'China East'
$imageName = 'myImage'
$rgName = 'myResourceGroup'

使用托管磁盘创建映像。

$imageConfig = New-AzImageConfig `
   -Location $location
$imageConfig = Set-AzImageOsDisk `
   -Image $imageConfig `
   -OsState Generalized `
   -OsType Windows `
   -ManagedDiskId $disk.Id

创建映像。

$image = New-AzImage `
   -ImageName $imageName `
   -ResourceGroupName $rgName `
   -Image $imageConfig

创建 VM

现在,你已有了一个映像,可以从该映像创建一个或多个新 VM。 本示例从 myResourceGroup 中的 myImage 创建名为 myVM 的 VM。

New-AzVm `
    -ResourceGroupName $rgName `
    -Name "myVM" `
    -Image $image.Id `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -SecurityGroupName "myNSG" `
    -PublicIpAddressName "myPIP" 

后续步骤

登录新虚拟机。 有关详细信息,请参阅 How to connect and log on to an Azure virtual machine running Windows(如何连接并登录到运行 Windows 的 Azure 虚拟机)。