当前位置: 首页 > Microsoft Azure > 正文

使用 PowerShell 创建 Azure VM 的自定义映像

上一篇中我们讲如何使用Azure门户页面创建Azure VM自定义映像,并基于此映像创建一个新的虚拟机,今天我们将利用Azure PowerShell自定义虚拟机映像文件。

登陆Azure门户创建一台Windows Server虚拟机

clip_image002

clip_image004

使用“MSTSC”远程登陆到该VM,并安装.Net3.5

clip_image006

clip_image008

使用“sysprep”通用化该服务器。以管理员身份打开“命令提示符”窗口。 将目录切换到 %windir%\system32\sysprep,然后运行 sysprep.exe。

clip_image010

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

clip_image012 clip_image014

clip_image016

使用以下命令释放虚拟机计算资源以解除VM

Stop-AzureRmVM -ResourceGroupName 35vCloudLab -Name 35vCloudLab -Force

clip_image018

clip_image020

使用以下命令将虚拟机的状态设置为 -Generalized

clip_image022

clip_image024

使用以下命令获取虚拟机

$vm = Get-AzureRmVM -Name 35vCloudLab -ResourceGroupName 35vCloudLab

使用以下命令创建虚拟机映像配置

$image = New-AzureRmImageConfig -Location ChinaEast -SourceVirtualMachineId $vm.ID

使用以下命令创建虚拟机映像

New-AzureRmImage -Image $image -ImageName 35vCloudLabImage -ResourceGroupName 35vCloudLab

clip_image026

clip_image028

以上,我们使用Azure PoweShell创建了虚拟机映像文件“35vCloudLabImage”,下面我们将使用Get-AzureRmImage 创建变量$image来存储自定义映像的相关信息,然后使用Set-AzureRmVMSourceImage并通过刚创建的$image变量指定 ID

$cred = Get-Credential -Message “Enter a username and password for the virtual machine.”

New-AzureRmResourceGroup -Name TestLabFromImage -Location ChinaEast

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `

-Name mySubnet `

-AddressPrefix 192.168.1.0/24

$vnet = New-AzureRmVirtualNetwork `

-ResourceGroupName TestLabFromImage `

-Location ChinaEast `

-Name TestLabvNet `

-AddressPrefix 192.168.0.0/16 `

-Subnet $subnetConfig

$pip = New-AzureRmPublicIpAddress `

-ResourceGroupName TestLabFromImage `

-Location ChinaEast `

-Name “mypublicdns$(Get-Random)” `

-AllocationMethod Static `

-IdleTimeoutInMinutes 4

$nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `

-Name myNetworkSecurityGroupRuleRDP `

-Protocol Tcp `

-Direction Inbound `

-Priority 1000 `

-SourceAddressPrefix * `

-SourcePortRange * `

-DestinationAddressPrefix * `

-DestinationPortRange 3389 `

-Access Allow

$nsg = New-AzureRmNetworkSecurityGroup `

-ResourceGroupName TestLabFromImage `

-Location ChinaEast `

-Name TestLabNSG `

-SecurityRules $nsgRuleRDP

$nic = New-AzureRmNetworkInterface `

-Name myNic `

-ResourceGroupName TestLabFromImage `

-Location ChinaEast `

-SubnetId $vnet.Subnets[0].Id `

-PublicIpAddressId $pip.Id `

-NetworkSecurityGroupId $nsg.Id

$vmConfig = New-AzureRmVMConfig `

-VMName TestLabVM `

-VMSize Standard_A1 | Set-AzureRmVMOperatingSystem -Windows `

-ComputerName TestLabVM `

-Credential $cred

# Here is where we create a variable to store information about the image

$image = Get-AzureRmImage `

-ImageName 35vCloudLabImage `

-ResourceGroupName TestLabFromImage

# Here is where we specify that we want to create the VM from and image and provide the image ID

$vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -Id $image.Id

$vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id

New-AzureRmVM `

-ResourceGroupName TestLabFromImage `

-Location ChinaEast `

-VM $vmConfig

使用“Get-AzureRmVM”查看创建的VM

clip_image030

clip_image032

clip_image034

如果有已经创建了很多个自定义虚拟机映像文件,那么可以使用以下脚本列出所有自定义虚拟机映像文件

$images = Find-AzureRMResource -ResourceType Microsoft.Compute/images

$images.name

clip_image036

使用以下脚本删除映像文件

Remove-AzureRmImage `

-ImageName myOldImage `

-ResourceGroupName myResourceGroup

clip_image038

clip_image040

clip_image042

可以看见映像文件“35vCloudLabImage”已经被删除

clip_image044

clip_image046

本文固定链接: http://365vcloud.net/2017/08/13/create-a-custom-image-of-azure-vm-using-powershell/ | Eric的学习之路

该日志由 TingXu 于2017年08月13日发表在 Microsoft Azure 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 使用 PowerShell 创建 Azure VM 的自定义映像 | Eric的学习之路
关键字: