使用 PowerShell 從 VHD 檔案建立自訂映像
在 Azure DevTest Labs 中,您可以使用自訂映像:
- 從預先安裝全部包含在內的 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 檔案建立自訂映像:
在 PowerShell 命令提示字元中,使用 Connect-AzAccount Cmdlet 登入您的 Azure 帳戶:
Connect-AzAccount
使用 Select-AzSubscription Cmdlet 選取您的 Azure 訂用帳戶。 將<訂用帳戶識別碼>取代為您的訂用帳戶識別碼 GUID。
$subscriptionId = '<subscription ID>' Select-AzSubscription -SubscriptionId $subscriptionId
呼叫 Get-AzResource Cmdlet 來取得實驗物件。 以您自己的資源群組和實驗名稱取代 [實驗資源群組名稱]<> 和 [實驗名稱]<> 預留位置。
$labRg = '<lab resource group name>' $labName = '<lab name>' $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
以您所上傳 VHD 檔案的 URI 取代 $vhdUri 變數的預留位置。 您可以從 Azure 入口網站中實驗儲存體帳戶的 Blob 頁面取得 VHD 檔案的 URI。 範例 VHD URI 為:
https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd
。$vhdUri = '<VHD URI>'
使用 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 檔案建立自訂映像。 若要使用指令碼,請將下列預留位置取代為您自己的值:
- <訂用帳戶識別碼>
- <實驗資源群組名稱>
- <實驗名稱>
- <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