本主題逐步講解如何使用 PowerShell 將通用化 VM 的 VHD 上傳到 Azure、從該 VHD 創建映像,然后從該映像創建新 VM。 可以上傳從本地虛擬化工具或其他云導出的 VHD。 對新的 VM 使用托管磁盤可以簡化 VM 管理,在將 VM 置于可用性集中時提供更好的可用性。
若要使用示例腳本,請參閱將 VHD 上傳到 Azure 并創建新的 VM 的示例腳本
開始之前
將任何 VHD 上傳到 Azure 之前,應該遵循準備要上傳到 Azure 的 Windows VHD 或 VHDX
請確保有最新版本的 AzureRM.Compute PowerShell 模塊。 運行以下命令來安裝該模塊。
PowerShell復制
Install-ModuleAzureRM.Compute-RequiredVersion2.6.0
有關詳細信息,請參閱Azure PowerShell 版本控制。
使用 Sysprep 通用化 Windows VM
Sysprep 將刪除所有個人帳戶信息及其他某些數據,并準備好要用作映像的計算機。 有關 Sysprep 的詳細信息,請參閱如何使用 Sysprep:簡介。
確保 Sysprep 支持計算機上運行的服務器角色。 有關詳細信息,請參閱Sysprep Support for Server Roles
Important
如果在首次將 VHD 上傳到 Azure 之前運行 Sysprep,請確保先準備好 VM,然后再運行 Sysprep。
登錄到 Windows 虛擬機。
以管理員身份打開“命令提示符”窗口。 將目錄切換到%windir%\system32\sysprep,然后運行sysprep.exe。
在“系統準備工具”對話框中,選擇“進入系統全新體驗(OOBE)”,確保已選中“通用化”復選框。
在“關機選項”中選擇“關機”。
單擊“確定”。
在 Sysprep 完成時,它會關閉虛擬機。 不要重新啟動 VM。
登錄到 Azure
如果尚未安裝 Azure PowerShell 1.4 版或更高版本,請閱讀如何安裝和配置 Azure PowerShell。
打開 Azure PowerShell 并登錄到 Azure 帳戶。 此時會打開一個彈出窗口讓輸入 Azure 帳戶憑據。
PowerShell復制
Login-AzureRmAccount-EnvironmentNameAzureChinaCloud
獲取可用訂閱的訂閱 ID。
PowerShell復制
Get-AzureRmSubscription
使用訂閱 ID 設置正確的訂閱。 將替換為正確訂閱的 ID。
PowerShell復制
Select-AzureRmSubscription-SubscriptionId""
獲取存儲帳戶
需要在 Azure 中創建存儲帳戶來存儲上傳的 VM 映像。 可以使用現有存儲帳戶,也可以創建新存儲帳戶。
如果要使用 VHD 為 VM 創建托管磁盤,存儲帳戶位置必須與要創建 VM 的位置相同。
顯示可用的存儲帳戶,請鍵入:
PowerShell復制
Get-AzureRmStorageAccount
如果要使用現有存儲帳戶,請轉到上傳 VM 映像部分。
若要創建存儲帳戶,請執行以下步驟:
需要應在其中創建存儲帳戶的資源組的名稱。 若要查找訂閱中的所有資源組,請鍵入:
PowerShell復制
Get-AzureRmResourceGroup
若要在中國東部區域中創建名為myResourceGroup的資源組,請鍵入:
PowerShell復制
New-AzureRmResourceGroup-NamemyResourceGroup-Location"China East"
使用New-AzureRmStorageAccountcmdlet 在此資源組中創建名為mystorageaccount的存儲帳戶:
PowerShell復制
New-AzureRmStorageAccount-ResourceGroupNamemyResourceGroup-Namemystorageaccount-Location"China East"`-SkuName"Standard_LRS"-Kind"Storage"
-SkuName 的有效值為:
Standard_LRS- 本地冗余存儲。
Standard_ZRS- 區域冗余存儲。
Standard_GRS- 異地冗余存儲。
Standard_RAGRS- 讀取訪問權限異地冗余存儲。
Premium_LRS- 高級本地冗余存儲。
將 VHD 上傳到存儲帳戶
使用Add-AzureRmVhdcmdlet 將 VHD 上傳到存儲帳戶中的容器。 本示例將文件myVHD.vhd從"C:\Users\Public\Documents\Virtual hard disks\"上傳到myResourceGroup資源組中名為mystorageaccount的存儲帳戶。 該文件將放入名為mycontainer的容器,新文件名為myUploadedVHD.vhd。
PowerShell復制
$rgName="myResourceGroup"$urlOfUploadedImageVhd="https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd"Add-AzureRmVhd-ResourceGroupName$rgName-Destination$urlOfUploadedImageVhd`-LocalFilePath"C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"
如果成功,會顯示類似于下面的響應:
PowerShell復制
MD5 hash is being calculatedforthe file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.MD5 hash calculation is completed.Elapsed timeforthe operation:00:03:35Creating new page blob of size53687091712...Elapsed timeforupload:01:12:49LocalFilePath? ? ? ? ? DestinationUri---------------------------C:\Users\Public\Doc...? https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd
完成執行此命令可能需要一段時間,具體取決于網絡連接速度和 VHD 文件的大小
如果要使用上傳的 VHD 創建托管磁盤或新 VM,請保存目標 URI路徑供稍后使用。
用于上傳 VHD 的其他選項
也可以使用以下方法之一將 VHD 上傳到存儲帳戶:
Storage Import/Export Service REST API Reference(存儲導入/導出服務 REST API 參考)
如果預估上傳時間大于 7 天,建議使用導入/導出服務。 可根據數據大小和傳輸單位,利用DataTransferSpeedCalculator預估時間。 導入/導出可用于復制到標準存儲帳戶。 需要使用 AzCopy 等工具從標準存儲復制到高級存儲帳戶。
通過上傳的 VHD 創建托管映像
使用通用 OS VHD 創建托管映像。 將值替換為自己的信息。
首先,設置公共參數:
PowerShell復制
$vmName="myVM"$computerName="myComputer"$vmSize="Standard_DS1_v2"$location="China East"$imageName="yourImageName"
使用通用 OS VHD 創建映像。
PowerShell復制
$imageConfig=New-AzureRmImageConfig-Location$location$imageConfig=Set-AzureRmImageOsDisk-Image$imageConfig-OsTypeWindows-OsStateGeneralized-BlobUri$urlOfUploadedImageVhd$image=New-AzureRmImage-ImageName$imageName-ResourceGroupName$rgName-Image$imageConfig
創建虛擬網絡
創建虛擬網絡的 vNet 和子網。
創建子網。 此示例創建名為mySubnet的子網,其地址前綴為10.0.0.0/24。
PowerShell復制
$subnetName="mySubnet"$singleSubnet=New-AzureRmVirtualNetworkSubnetConfig-Name$subnetName-AddressPrefix10.0.0.0/24
創建虛擬網絡。 此示例創建名為myVnet的虛擬網絡,其地址前綴為10.0.0.0/16。
PowerShell復制
$vnetName="myVnet"$vnet=New-AzureRmVirtualNetwork-Name$vnetName-ResourceGroupName$rgName-Location$location`-AddressPrefix10.0.0.0/16-Subnet$singleSubnet
創建公共 IP 地址和網絡接口
若要與虛擬網絡中的虛擬機通信,需要一個公共 IP 地址和網絡接口。
創建公共 IP 地址。 此示例創建名為myPip的公共 IP 地址。
PowerShell復制
$ipName="myPip"$pip=New-AzureRmPublicIpAddress-Name$ipName-ResourceGroupName$rgName-Location$location`-AllocationMethodDynamic
創建 NIC。 此示例創建名為myNic的 NIC。
PowerShell復制
$nicName="myNic"$nic=New-AzureRmNetworkInterface-Name$nicName-ResourceGroupName$rgName-Location$location`-SubnetId$vnet.Subnets[0].Id-PublicIpAddressId$pip.Id
創建網絡安全組和 RDP 規則
若要使用 RDP 登錄到 VM,需要創建一個允許在端口 3389 上進行 RDP 訪問的網絡安全規則 (NSG)。
此示例創建名為myNsg的 NSG,其中包含一個允許通過端口 3389 傳輸 RDP 流量的、名為myRdpRule的規則。 有關 NSG 的詳細信息,請參閱Opening ports to a VM in Azure using PowerShell(使用 PowerShell 在 Azure 中打開 VM 端口)。
PowerShell復制
$nsgName="myNsg"$ruleName="myRdpRule"$rdpRule=New-AzureRmNetworkSecurityRuleConfig-Name$ruleName-Description"Allow RDP"`-AccessAllow-ProtocolTcp-DirectionInbound-Priority110`-SourceAddressPrefixInternet-SourcePortRange* `-DestinationAddressPrefix*-DestinationPortRange3389$nsg=New-AzureRmNetworkSecurityGroup-ResourceGroupName$rgName-Location$location`-Name$nsgName-SecurityRules$rdpRule
為虛擬網絡創建變量
為完成的虛擬網絡創建變量。
PowerShell復制
$vnet=Get-AzureRmVirtualNetwork-ResourceGroupName$rgName-Name$vnetName
獲取 VM 的憑據
以下 cmdlet 將打開一個窗口,需在其中輸入遠程訪問 VM 所用的本地管理員帳戶的新用戶名和密碼。
PowerShell復制
$cred=Get-Credential
將 VM 的名稱和大小添加到 VM 配置。
PowerShell復制
$vm=New-AzureRmVMConfig-VMName$vmName-VMSize$vmSize
將 VM 映像設置為新 VM 的源映像
使用托管 VM 映像的 ID 設置源映像。
PowerShell復制
$vm=Set-AzureRmVMSourceImage-VM$vm-Id$image.Id
設置 OS 配置并添加 NIC。
輸入 OS 磁盤的存儲類型(PremiumLRS 或 StandardLRS)和大小。 此示例將帳戶類型設置為PremiumLRS,將磁盤大小設置為128 GB,將磁盤緩存設置為ReadWrite。
PowerShell復制
$vm=Set-AzureRmVMOSDisk-VM$vm-DiskSizeInGB128`-CreateOption FromImage-CachingReadWrite$vm=Set-AzureRmVMOperatingSystem-VM$vm-Windows-ComputerName$computerName`-Credential$cred-ProvisionVMAgent-EnableAutoUpdate$vm=Add-AzureRmVMNetworkInterface-VM$vm-Id$nic.Id
創建 VM
使用存儲在$vm變量中的配置創建新 VM。
PowerShell復制
New-AzureRmVM-VM$vm-ResourceGroupName$rgName-Location$location
驗證是否已創建 VM
完成后,應會在Azure 門戶的“瀏覽” > “虛擬機”下看到新建的 VM,也可以使用以下 PowerShell 命令查看該 VM:
PowerShell復制
$vmList=Get-AzureRmVM-ResourceGroupName$rgName$vmList.Name
后續步驟
若要登錄到新虛擬機,請在門戶中瀏覽到該 VM,單擊“連接”,然后打開遠程桌面 RDP 文件。 使用原始虛擬機的帳戶憑據登錄到新虛擬機。 有關詳細信息,請參閱How to connect and log on to an Azure virtual machine running Windows(如何連接并登錄到運行 Windows 的 Azure 虛擬機)。
立即訪問http://market.azure.cn