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{"沒有該虛擬環境,請重新輸入!"}
}

 

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