#---------------批量创建WIN虚拟机改IP+主机名+密码+拨号-------------------- #虚拟机存放路径$VHDPath="D:\vmvhd"#模板位置 $MasterDiskPath="D:\mupan.vhdx" #虚拟机密码设置 $password="wangdun" #虚拟机IP信息$IP="192.168.198."$GATEWAY="192.168.198.1"$DNS="223.5.5.5"#虚拟机IP开始值$IP_START=4#准备创建虚拟机的数量$IP_ZENJIA=1#虚拟机网卡名称$NetworkName="adsl"#虚拟机cpu核数 $LogicPrecesserCount=4#虚拟机内存$MomeryCount=2GB #----------------------------下面部分不用修改------------------------ $IP_END=$IP_START+$IP_ZENJIA - 1for($i=$IP_START;$i -le$IP_END;$i++) { $VMDIR = $VHDPath + $IP +$I #创建虚拟机磁盘存放的文件夹mkdir $VMDIR #虚拟机名称$VMName = $IP + $i + ".vhdx" #虚拟机文件所在的完整路径$VMCFDIR = $VMDIR + "" + $VMName#拷贝母盘到虚拟机存放的目录下#Copy-Item $MasterDiskPath $VMCFDIRNew-VHD -ParentPath $MasterDiskPath -Path $VMCFDIR -Differencing#读取该虚拟机指定的拨号信息 $Contents=Import-Csv "c:\winpppoe.csv"$csvpppoe=$Contents.csvpppoe[$I]$csvpassword=$Contents.csvpassword[$I]$csvvmhost=$Contents.csvvmhost[$I]$csvvlan=$Contents.csvvlan[$I]$pshell1=$Contents.pshell[1]$pshell2=$Contents.pshell[2]#创建一个虚拟机 $HYName = $csvvmhost + "/" + $IP + $i + "/" + $csvpppoeNew-VM -Name $HYName -path $VMDIR -MemoryStartupBytes $MomeryCount -VHDPath $VMCFDIR -SwitchName $NetworkName#到虚拟机磁盘目录cd $VMDIR#生成改IP脚本到虚拟机目录New-Item "ip.ps1" -type File$wmi="$"+"wmi"$computer="$"+"computer""copy Z:\拨号账号.TXT C:\Users\Administrator\Desktop" |Add-Content ip.ps1 -encoding utf8 "$pshell1 "|Add-Content ip.ps1 -encoding utf8"$wmi.EnableStatic('$IP$I', '255.255.255.0')" |Add-Content ip.ps1 -encoding utf8"#$wmi.SetGateways('$GATEWAY', 1)" |Add-Content ip.ps1 -encoding utf8"#$wmi.SetDNSServerSearchOrder('$DNS')" |Add-Content ip.ps1 -encoding utf8"$computer=Get-WMIObject Win32_ComputerSystem" |Add-Content ip.ps1 -encoding utf8"$computer.Rename('$csvvmhost') | out-null" |Add-Content ip.ps1 -encoding utf8"net user administrator $password" |Add-Content ip.ps1 -encoding utf8"$pshell2" |Add-Content ip.ps1 -encoding utf8"" |Add-Content ip.ps1 -encoding utf8#新建拨号信息New-Item "拨号账号.txt" -type File#编辑拨号信息"$csvpppoe/$csvpassword" | Out-File -Append 拨号账号.txt -encoding utf8#生成iso的脚本到虚拟机目录New-Item "iso.bat" -type File"ultraiso -volume iso -file %cd%\ip.ps1 -file %cd%\拨号账号.txt -output %cd%\ip.iso" |Add-Content iso.bat #设置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#设置虚拟机内核数量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 } 母盘制作步骤
一、添加任务计划
1.执行 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe z:\IP.PS1
使用不登录也执行,使用最高权限运行,触发器设置延迟30秒开始执行
二、修改光驱盘符
设置DVD设备盘符为 Z
三、因为win7 禁止执行Powershell脚本,使用管理员打开PowerShell 输入
set-executionpolicy remotesigned 选择“是”
四、删除该项注册表
找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\目录下
删除4D开头的选项,目的是批量新开机器的本地网卡名称为 “本地连接”
五、关机,完成模板制作
使用到的机柜文件
批量创建完成后Hyper-V效果图
使用PowerShell批量创建端口映射方便远程登录管理
|