#----------------------批量建立虛拟機腳本-----------------
#母盤位置:注意不要放C槽!!
$MasterDiskPath="d:\20210816.vhdx"
#虛拟機存放位置
$VHDPath="d:\vhd\"
#虛拟機IP初始資訊
$IP="192.168.18."
#虛拟機IP開始值
$IP_START=2
#建立虛拟機的數量
$IP_ZENJIA=50
#虛拟機網卡名稱
$NetworkName1="nat"
$NetworkName2="adsl"
#虛拟機撥号網卡名稱
$pppoenic="eth1"
#撥号DNS+密碼
$DNS1="223.5.5.5"
$DNS2="223.6.6.6"
#虛拟機cpu核數
$LogicPrecesserCount=2
#虛拟機記憶體
$MomeryCount=2GB
#----------------------------下面部分不用修改------------------------
$IP_END=$IP_START+$IP_ZENJIA - 1
for($I=$IP_START;$I -le$IP_END;$I++) {
$VMDIR = $VHDPath + $IP +$I
#建立虛拟機磁盤存放的檔案夾
mkdir $VMDIR
#虛拟機名稱
$VMName = $IP + $I + ".vhdx"
#虛拟機檔案所在的完整路徑
$VMCFDIR = $VMDIR + "\" + $VMName
#建立完整磁盤到虛拟機指定的目錄下
#Copy-Item $MasterDiskPath $VMCFDIR
#建立差異磁盤到虛拟機指定的目錄下
New-VHD -ParentPath $MasterDiskPath -Path $VMCFDIR -Differencing
#讀取該虛拟機指定的撥号資訊
$Contents=Import-Csv "c:\pppoe.csv"
$csvpppoe=$Contents.csvpppoe[$I]
$csvpassword=$Contents.csvpassword[$I]
$csvvmhost=$Contents.csvvmhost[$I]
$csvvlan=$Contents.csvvlan[$I]
#建立虛拟機
$HYName = $csvvmhost + "/" + $IP + $I + "/" + $csvpppoe + "/" + $csvpassword
New-VM -Name $HYName -path $VMDIR -MemoryStartupBytes $MomeryCount -VHDPath $VMCFDIR -SwitchName $NetworkName1
#到虛拟機磁盤目錄
cd $VMDIR
#建立内網網卡資訊
New-Item "ip.txt" -type File
#寫入内網網卡資訊到檔案
"IPADDR=$IP$I" |Out-File ip.txt -encoding utf8
#建立自動撥号腳本
New-Item "autoad.sh" -type File
#編輯自動撥号腳本
"pppoe-setup <<EOF" |Add-Content autoad.sh -encoding utf8
" " |Add-Content autoad.sh -encoding utf8
"$csvpppoe" |Add-Content autoad.sh -encoding utf8
"$pppoenic" |Add-Content autoad.sh -encoding utf8
"no" |Add-Content autoad.sh -encoding utf8
"$DNS1" |Add-Content autoad.sh -encoding utf8
"$DNS2" |Add-Content autoad.sh -encoding utf8
"$csvpassword" |Add-Content autoad.sh -encoding utf8
"$csvpassword" |Add-Content autoad.sh -encoding utf8
"yes" |Add-Content autoad.sh -encoding utf8
"0" |Add-Content autoad.sh -encoding utf8
"yes" |Add-Content autoad.sh -encoding utf8
"y" |Add-Content autoad.sh -encoding utf8
"EOF" |Add-Content autoad.sh -encoding utf8
"hostnamectl set-hostname $csvvmhost" |Add-Content autoad.sh -encoding utf8
#生成腳本并複制到虛拟機目錄
New-Item "iso.bat" -type File
"ultraiso -volume iso -file %cd%\ip.txt -file %cd%\autoad.sh -output %cd%\ip.iso" |Add-Content iso.bat
#Copy-Item c:/iso.bat $VMDIR
#設定UltraISO環境變量
$Env:path=$Env:Path+";C:\"
#執行生成iso腳本
cmd /c iso.bat
#虛拟機挂載iso檔案
set-VMDvdDrive -VMName $HYName -path $VMDIR\ip.iso
#增加一個網卡擴充卡并挂載網卡
Add-VMNetworkAdapter $HYName -Name network2
Connect-VMNetworkAdapter $HYName -Name network2 $NetworkName2
#修改撥号網卡的vlan
#Set-VMNetworkAdaptervlan -VMName $HYName -VMNetworkAdapterName network2 -Access -VlanID $csvvlan
#設定虛拟機核心數量
Set-VMProcessor $HYName -Count $LogicPrecesserCount
#設定動态記憶體
#Set-VMMemory $HYName -StartupBytes 2048MB
#Set-VMMemory $HYName -DynamicMemoryEnabled $true -MaximumBytes 2048MB -MinimumBytes 800MB
#設定所有網卡的速率為20mb
#Set-VMNetworkAdapter –VMName $HYName -MaximumBandwidth 20000000
#删除網卡
#Remove-VMNetworkAdapter -VMName $HYName -VMNetworkAdapterName network2
#開啟路由器保護功能
Set-VMNetworkAdapter $HYName -RouterGuard On
#啟動虛拟朿
Start-VM -Name $HYName
}
CentOS母盤制作步驟
1.修改網卡配置檔案,将内網網卡配置檔案中的"IPADDR=192.168.2.2"該行删除
2.将gaiip.sh 上傳到系統/目錄
3.添加gaiip.sh執行權限
chmod +x /gaiip.sh
4.編輯開機啟動項
vi /etc/rc.d/rc.local
添加一行腳本路徑
/gaiip.sh
添加開機啟動項的執行權限
chmod +x /etc/rc.d/rc.local
5.将虛拟機關機,該虛拟機磁盤檔案即為可用來制作自動建立虛拟機的系統模闆
母盤腳本 gaiip.sh:
#!/bin/bash
mount /dev/cdrom /mnt
cp /mnt/ip.txt /ip.txt
cp /mnt/autoad.sh /autoad.sh
sed -i 's/^\xEF\xBB\xBF//g' /ip.txt
sed -i 's/^\xEF\xBB\xBF//g' /autoad.sh
dos2unix /ip.txt
dos2unix /autoad.sh
cat /ip.txt >>/etc/sysconfig/network-scripts/ifcfg-eth1
chmod 777 /autoad.sh
service network restart
sh /autoad.sh
rm -rf /ip.txt
rm -rf /autoad.sh
eject /dev/cdrom
開始批量建立虛拟機
1.将UltraISO.exe+iso.bat+adsl.txt+建立虛拟機改IP.PS1 拷貝到伺服器C槽根目錄
2.在伺服器中安裝UltraISO.exe ,安裝目錄使用預設路徑,不要修改!
3.使用PowerShell打開腳本檔案,修改模闆檔案路徑、存放虛拟機的路徑、網卡名稱/速率、IP資訊(隻允許寫IP,不要加其他資訊)、機器配置/數量等資訊
4.開始執行腳本,批量建立虛拟機并自動修改IP位址
5.使用PassPort軟體,結合EXCEL批量 導入映射資訊
6.測遠端連接配接,虛拟機建立完成