另存为xxx.ps1
##########################通过模版批量部署虚拟机以下内容需要人工定义变量####################### #Vcenter的IP
$vcenterIP ="10.40.24.3"
#ESXI的IP
$vmhost="10.40.8.2"
#该ESXI对应的存储名称
$dataStore="8.2_RAID5"
#使用的克隆的模版名字
$vmTemplate="linux-template10.40.24.252B"
#计算机名的前缀,不要再加一个-
$vmName_prefix="lin-42-0"
#计算机IP的前缀,不要再加一个.
$vmIP_prefix ="10.42.0"
#计算机的子网掩码
$vmIP_mask ="255.255.255.0"
#计算机的网关
$vmIP_gateway ="10.42.0.254"
#虚拟机创建循环的步长
$vmIPstep =1
#虚拟机创建循环的起始IP地址
$IPstart=12
#虚拟机创建循环的结束IP地址
$IPEnd=12
#连接Vcenter的IP,帐号密码
Connect-VIServer -Server $vcenterIP -User xxxx -Password xxxx
#查找自定义规范管理器里的模版
$custSysprep = Get-OSCustomizationSpec | where {$_.name -like "linux-vlan120"}
#想把虚拟机创建到哪个文件夹
$Location = "abc"
#设置当前虚拟机的网卡属于哪个vlan
$NetworkName = "vlan120"
##########################通过模版批量部署虚拟机以上内容需要人工定义变量#######################
#IP从哪个开始
$i=$IPstart
#当IP>当前循环IP,<循环IP,才继续执行
while (($i -ge $IPstart) -and ($i -le $IPEnd))
{
#拼接计算机IP
$vmIP="$vmIP_prefix.$i"
#拼接计算机名称
$vmName="$vmName_prefix-$i"
#修改自定义规范管理器里的模版内容,使用静态IP方式,IP地址,IP子网掩码,和网关
$custSysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $vmIP -SubnetMask $vmIP_mask -DefaultGateway $vmIP_gateway
#创建虚拟机,哪台ESXI,计算机名,模版,数据存储,自定义模版,以及创建到哪个文件夹下。
New-VM -vmhost $vmhost -Name $vmName -Template $vmTemplate -Datastore $dataStore -OSCustomizationspec $custSysprep -Location $Location
#设置当前虚拟机的网卡属于哪个vlan
Get-VM -Name $vmName | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $NetworkName -Confirm:$false
#启动当前虚拟机
Get-VM -Name $vmName | Start-VM
#循环增加一次
$i=$i+$vmIPstep
}
#恢复自定义规范管理器里的模版到默认情况,用户自定义IP。。。
$custSysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode PromptUser -SubnetMask $vmIP_mask -DefaultGateway $vmIP_gateway