你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 PowerShell 基于 VHD 文件创建自定义映像

在 Azure 开发测试实验室中,可以使用自定义映像来执行以下操作:

  • 从预安装了所有你需要的软件的 VHD 文件创建一个 VM。
  • 快速创建 VM,因为无需在目标计算机上安装所有必需的软件。
  • 通过从一个 VM 创建自定义映像,然后基于该映像创建 VM 来克隆 VM。

先决条件

若要完成本教程,需要一个虚拟硬盘 (VHD) 文件,并且该文件已上传到要在其中创建自定义映像的实验室的 Azure 存储帐户。 若要将 VHD 文件上传到存储帐户,请按照以下文章之一中的说明进行操作:

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

PowerShell 步骤

以下步骤将引导你完成使用 Azure PowerShell 基于 VHD 文件创建自定义映像的过程:

  1. 在 PowerShell 命令提示符处,登录 Azure 帐户,请运行 Connect-AzAccount cmdlet:

    Connect-AzAccount
    
  2. 通过 Select-AzSubscription cmdlet 选择 Azure 订阅。 请将 <订阅 ID> 替换为你的订阅 ID GUID。

    $subscriptionId = '<subscription ID>'
    Select-AzSubscription -SubscriptionId $subscriptionId
    
  3. 通过调用 Get-AzResource cmdlet 获取实验室对象。 将 <实验室资源组名称> 和 <实验室名称> 占位符替换为自己的资源组和实验室名称。

    $labRg = '<lab resource group name>'
    $labName = '<lab name>'
    $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. 将 $vhdUri 变量占位符替换为已上传 VHD 文件的 URI。 你可以从 Azure 门户的实验室存储帐户中的 blob 页获得 VHD 文件的 URI。 VHD URI 示例为:https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd

    $vhdUri = '<VHD URI>'
    
  5. 使用 New-AzResourceGroupDeployment cmdlet 创建自定义映像。 将 <自定义映像名称> 和 <自定义映像说明> 占位符替换为所需的名称和说明。

    $customImageName = '<custom image name>'
    $customImageDescription = '<custom image description>'
    
    $parameters = @{existingLabName="$($lab.Name)"; existingVhdUri=$vhdUri; imageOsType='windows'; isVhdSysPrepped=$false; imageName=$customImageName; imageDescription=$customImageDescription}
    
    New-AzResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters
    

完整的 PowerShell 脚本

结合上述步骤可生成以下 PowerShell 脚本,该脚本基于 VHD 文件创建自定义映像。 若要使用脚本,请将以下占位符替换为你自己的值:

  • <订阅 ID>
  • <实验室资源组名称>
  • <实验室名称>
  • <VHD URI>
  • <自定义映像名称>
  • <自定义映像说明>
# Log in to your Azure account.
Connect-AzAccount

# Select the desired Azure subscription.
$subscriptionId = '<subscription ID>'
Select-AzSubscription -SubscriptionId $subscriptionId

# Get the lab object.
$labRg = '<lab resource group name>'
$labName = '<lab name>'
$lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)

# Set the URI of the VHD file.
$vhdUri = '<VHD URI>'

# Set the custom image name and description values.
$customImageName = '<custom image name>'
$customImageDescription = '<custom image description>'

# Set up the parameters object.
$parameters = @{existingLabName="$($lab.Name)"; existingVhdUri=$vhdUri; imageOsType='windows'; isVhdSysPrepped=$false; imageName=$customImageName; imageDescription=$customImageDescription}

# Create the custom image.
New-AzResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters

后续步骤