VMware powerCLI+ Power Shell实现批量克隆虚拟机

——在公司没有VMware云平台之前的那段时间,创建新虚拟机的时候都是手动根据模板来克隆,鼠标操作点点点、下一步、下一步、等重复操作,一两台无所谓点点点就好了;若是一天就要创建几十台每周几百台都要这么点点点 会疯掉的,废了不少脑细胞弄出来的脚本虽然现在用不到了,记录下,如下
我的环境
windosServerR2中运行的VMware powerCLI6.0(网络要和Vcenter相通)

功能:只是记录 去掉了很多模板,很多都是重复的代码主要就这些,可以在switch语句中添加Vcenter环境和模板

用法:运行脚本后选择要登录的Vcenter环境(开发、测试、生产)——>选择要克隆虚拟机要依据的模板 ——> 选择要配置的虚拟机IP的末位(如图1,243-243 克隆一台 )或者243-250(192.168.100.243-192.168.100.250克隆8台)确定回车

PowerShell代码如下

#生产环境全变量
$NJPLResourcePool="Dell_Cluster01"
$Script:NJPLResourcePool
$NJPLdataStore="DISK04"
$Script:NJPLdataStore
$NJPLvmName_prefix="NJPL014"
$Script:NJPLvmName_prefix
$NJPLvmIP_prefix ="192.168.100"
$Script:NJPLvmIP_prefix
$NJPLvmIP_mask ="255.255.255.0"
$Script:NJPLvmIP_mask
$NJPLvmIP_gateway ="192.168.100.1"
$Script:NJPLvmIP_gateway
$VCSAResourcePool="Cluster02"
$Script:VCSAResourcePool
$VCSAdataStore="vsanDatastore (1)"
$Script:VCSAdataStore
$VCSAvmName_prefix="NJPL020"
$Script:VCSAvmName_prefix
$VCSAvmIP_prefix ="192.168.200"
$Script:VCSAvmIP_prefix
$VCSAvmIP_mask ="255.255.255.0"
$Script:VCSAvmIP_mask
$VCSAvmIP_gateway ="192.168.200.1"
$Script:VCSAvmIP_gateway
#以模板配置命名的函数
function FNJPL4C8G30G()
{
$vmTemplate="RHEL6.8_4U_8G_30G201880517"
$vmIPstep =1
$IPstart=Read-Host "请输入IP末尾 开始 IP"
$IPEnd=Read-Host "请输入IP末尾 结束 IP"
Write-Host '确 认 ? 请按任意键继续!!' -NoNewline
$null = [Console]::ReadKey('?')

$custSysprep = Get-OSCustomizationSpec Rhel6.8113P
$i=[int]$IPstart
while (($i -ge [int]$IPstart) -and ($i -le [int]$IPEnd))
{
$vmIP="$NJPLvmIP_prefix.$i"
$vmName="$NJPLvmName_prefix$i"
$custSysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $vmIP -SubnetMask $NJPLvmIP_mask -DefaultGateway $NJPLvmIP_gateway
New-VM -ResourcePool $NJPLResourcePool -Name $vmName -Template $vmTemplate -Datastore $NJPLdataStore -OSCustomizationspec $custSysprep
$i=$i+$vmIPstep
Get-VM -Name $vmName | Start-VM
}
$custSysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode PromptUser -SubnetMask $NJPLvmIP_mask -DefaultGateway $NJPLvmIP_gateway
}s
function C7FNJPL8C8G30G()
{
$vmTemplate="Centos7_8U_8G_30G_20180427"
$vmIPstep =1
$IPstart=Read-Host "请输入IP末尾 开始 IP"
$IPEnd=Read-Host "请输入IP末尾 结束 IP"
Write-Host '确 认 ? 请按任意键继续!!' -NoNewline
$null = [Console]::ReadKey('?')

$custSysprep = Get-OSCustomizationSpec Rhel6.8113P
$i=[int]$IPstart
while (($i -ge [int]$IPstart) -and ($i -le [int]$IPEnd))
{
$vmIP="$NJPLvmIP_prefix.$i"
$vmName="$NJPLvmName_prefix$i"
$custSysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $vmIP -SubnetMask $NJPLvmIP_mask -DefaultGateway $NJPLvmIP_gateway
New-VM -ResourcePool $NJPLResourcePool -Name $vmName -Template $vmTemplate -Datastore $NJPLdataStore -OSCustomizationspec $custSysprep
$i=$i+$vmIPstep
Get-VM -Name $vmName | Start-VM
}
$custSysprep | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode PromptUser -SubnetMask $NJPLvmIP_mask -DefaultGateway $NJPLvmIP_gateway
}

#生产环境
function FNJPL()
{
Connect-VIServer -Server 192.168.1.200 -User "[email protected]" -Password "Vcenterpasswd"
$FNJPL_CONFIG_ENV=Read-Host "
(1) RHEL6.8_4U_8G_30G
(2) Centos7_8U_8G_30G

请输入克隆虚拟机的配置(1/2/3/4/5/6) "
switch($FNJPL_CONFIG_ENV)
{
1 {FNJPL4C8G30G}
2 {C7FNJPL8C8G30G}

Default{"没有相应的配置,请重新输入!"}
}
}

#第一执行
$NJPL_Virtual_ENV=Read-Host "
(1) SIT环境
(2) 开发环境
(3) 生产环境

请输入你克隆环境(1/2/3) "
switch($NJPL_Virtual_ENV)
{
1 {TEST} #SIT环境
2 {DEVOP}#开发环境
3 {FNJPL}#生产环境
Default{"没有该虚拟环境,请重新输入!"}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章