使用自定义映像批量创建托管磁盘虚拟机

1.在New Region创建一台Windows Server 2012 R2的机器,大小配置:D2s v3

2.部署应用环境(测试时,只在C盘下添加了文件夹fold1,文件file1;在数据磁盘F盘添加了文件夹fold2,文件file2;关闭了IE增强的安全配置)

 3.按照正常的流程捕获虚拟机

 

 4.通过如下Powershell脚本批量创建Windows托管磁盘虚拟机

#设置初始变量
$cred = Get-Credential
$rgName = "yourResourceGroupName"
$location = "Chinaeast"
$imageName = "yourCustomImageName"
$storageType = 'Standard_LRS'
$myVnet = "yourVirtualNetwork"
$nsgName = "yourNetworkSecurityGroup"
$vmSize = "Standard_A3"

#读取镜像文件、虚拟网络、网络安全组信息
$image = Get-AzureRMImage -ImageName $imageName -ResourceGroupName $rgName
$vnet = Get-AzureRmVirtualNetwork -Name $myVnet -ResourceGroupName $rgName
$nsg = Get-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Name $nsgName
$AvailabilitySet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $nsgName

#使用循环创建VM,默认数量为30(可调整)
for($i=1;$i –le 30;$i++)
{

#设置虚拟机名称变量
$vmName = "testVM" +$i;
$nicName = "$vmName-Nic" ;
$dataDiskName = "$vmName-DataDisk01" ;
$ipName = "$vmName-Pip";

#建立虚拟网卡
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic ;
$nic = New-AzureRmNetworkInterface  -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id ;

#设置并建立300GB的附加数据磁盘(大小可调整)
$diskConfig = New-AzureRmDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 300 ;
$dataDisk1 = New-AzureRmDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName ;

#建立VM配置文件(操作系统为 Windwos 系统磁盘为128GB)
$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetID $AvailabilitySet.Id ;
$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id ;
$vm = Set-AzureRmVMOSDisk -VM $vm -StorageAccountType $storageType -DiskSizeInGB 128 -CreateOption FromImage -Caching ReadWrite ;
$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate ;
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id ;
$vm = Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1 ;

#建立VM
New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $location -AsJob ;
#创建时加-AsJob会在后台创建,如果不加会等待很长时间,测试时大概建立一台需要10分钟左右,加上-AsJob资源也是依次出现
}

 5.实测情况说明如下

 

 

备注:
a.如果客户特殊要求:不需要配置公网IP,去掉参数"-PublicIpAddressId $pip.Id"即可
b.如果创建的为Linux虚拟机,只需要将参数"-Windows"修改为"-Linux"
c.存储账号的类型有Standard_LRS/Standard_GRS/Standard_RA-GRS/Premium_LRS
d.可以通过命令:Get-AzureRmVMSize,获取指定区域的虚拟机的型号大小

原文地址:https://www.cnblogs.com/stonehe/p/9083910.html