PowerShell批量部署Hyper-VWindows虚机-创新互联
第一步:制作模板VHDX文件(略); 第二步:制作初始化系统脚本(自动设置IP、GW等); 将以下2个脚本放置到模板VHDX中的C:\Windows\Setup\Scripts目录下: 第1个脚本:FirstRun.ps1 #获取计算机名称 $VMname=hostname #根据计算机名称获取IP地址后6位 [int]$IP1=$VMname.Substring($VMname.Length - 6,3) [int]$IP2=$VMname.Substring($VMname.Length - 3,3) #设定FSNNetwork $IPaddr1=$IPaddr1='172.1.' + $IP1 + '.' + $IP2 New-NetIPAddress -InterfaceIndex 12 -IPAddress $IPaddr1 -PrefixLength 16 -DefaultGateway 172.1.0.250 Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses ("172.1.0.1","172.1.0.2") exit 第2个脚本:SetupComplete.cmd (该脚本名称必须为SetupComplete) Powershell -Command "C:\Windows\Setup\Scripts\'FirstRun.ps1'" timeout 3 gpupdate /force cd C:\Windows\System32 wuauclt.exe /DetectNow /UpdateNow ::cd C:\FalconAgent ::falcon-agent.exe -service install ::sc.exe config falconagent Start=delayed-auto ::falcon-agent.exe -service start del C:\Windows\Setup\Scripts\FirstRun.ps1 del %0 第三步:创建自动化部署脚本 # ================================ # # Create-VM_V1.0(Windows).PS1 # # 通过PowerShell创建Hyper-V虚机 # # ================================ # #Param($VM_Name,$VM_HostName) Write-Host -NoNewline -ForegroundColor Magenta '请输入要创建的虚机名称(如:VWSR******)' [String]$VM_Name = Read-Host Write-Host -NoNewline -ForegroundColor Magenta '请输入需要放在哪台宿主机上(如:PWSR******)' [String]$VM_HostName= Read-Host Write-Host -NoNewline -ForegroundColor Magenta '要部署App Server还是SQL Server?默认App Server回车即可(如:sql 回车或者2 回车)' [String]$VM_OSClass= Read-Host #判断虚机名称是否为大写字母 if ($VM_Name |findstr 'vwsr') { Write-Host -NoNewline -ForegroundColor Yellow '注意:虚机名需要使用大写字母!!!' break } Else { } $VM_Memory= 4GB $VM_CpuCount= 4 $Owner= "IT" $Org= "sxleilong.com" $NetworkSwitch= "FSNNetwork" #$AdminPassword = "Administrator Password" $SourcePath= "D:\VM_Deploy_Script" $DjoinSource= $SourcePath + '\' + $VM_Name +'.txt' #if判断要部署App Server还是SQL Server,默认是App Server if (($VM_OSClass -eq '2') -or ($VM_OSClass -eq 'sql') -or ($VM_OSClass -eq 'SQL')) {$Template_VHDX= $SourcePath + '\' + 'En_WinSrv12R2_For_SQL.vhdx' Write-Host -ForegroundColor Green "您选择安装SQL虚机!!!" } Else {$Template_VHDX= $SourcePath + '\' + 'En_WinSrv12R2_For_APP.vhdx' Write-Host -ForegroundColor Green "您选择安装App虚机!!!" } #if判断如果虚机所在宿主机为管理系,虚机文件存放位置为E盘 if (( $VM_HostName -eq 'PWSR252001' ) -or ($VM_HostName -eq 'PWSR252002' )) { $VM_Path = 'E:\' + $VM_HostName + '_E_VMs' $VM_RemotePath = '\\' + $VM_HostName + '\E$\' + $VM_HostName + '_E_VMs' } Else { $VM_Path = 'D:\' + $VM_HostName + '_D_VMs' $VM_RemotePath = '\\' + $VM_HostName + '\D$\' + $VM_HostName + '_D_VMs' } $VM_VHDPath = $VM_Path + '\' + $VM_Name + '\Virtual Hard Disks\'+ $VM_Name + '.vhdx' $VM_VHDRemotePath = $VM_RemotePath + '\' + $VM_Name + '\Virtual Hard Disks\' + $VM_Name + '.vhdx' #if判断是否为0系管理服务器,用以自动加入不同OU if ($VM_Name |findstr 'VWSR000' ) { $VM_MachineOU= "OU=MgmtServers,OU=sxleilong,DC=sxleilong,DC=cn" } Else { $VM_MachineOU= "OU=NewInfra,OU=Production Servers,OU=sxleilong,DC=sxleilong,DC=cn" } #编辑应答文件模板 $UnattendTemplate= "Unattend-template.xml" $Unattendfile= New-Object XML $Unattendfile.Load($SourcePath+"\"+$UnattendTemplate) $Unattendfile.unattend.settings.component[2].ComputerName=$VM_Name $Unattendfile.unattend.settings.component[2].RegisteredOrganization=$Org $Unattendfile.unattend.settings.component[2].RegisteredOwner=$Owner $Unattendfile.unattend.settings.Component[3].RegisteredOrganization=$Org $Unattendfile.unattend.settings.Component[3].RegisteredOwner=$Owner #$UnattendFile.unattend.settings.component[3].UserAccounts.AdministratorPassword.Value=$AdminPassword #$UnattendFile.unattend.settings.component[3].autologon.password.value=$AdminPassword $UnattendXML=$SourcePath+"\"+$VM_Name+".xml" $Unattendfile.save($UnattendXML) #Mount模板VHDX Mount-diskp_w_picpath $Template_VHDX $DriveLetter=((Get-DiskImage $Template_VHDX | get-disk | get-partition | Where-Object Type -eq "Basic").DriveLetter)+":" #注入Unattend.xml文件到VHDX中 $UnattendXml_Destination=$Driveletter+"\Windows\System32\Sysprep\unattend.xml" Copy-Item $UnattendXml $UnattendXml_Destination -Force #生成Offline JoinDomain文件 Djoin /Provision /Domain sxleilong.com /Machine $VM_Name /MachineOU $VM_MachineOU /Savefile $DjoinSource /Reuse #注入Offline JoinDomain文件,并移除历史DjoinFile $DjoinDestination= $Driveletter+'\Windows' $His_DjoinFile= $DjoinDestination +'\'+'VWSR*.txt' Remove-Item -Path $His_DjoinFile -Force Copy-Item $DjoinSource $DjoinDestination -Force Djoin /RequestODJ /Loadfile "$VM_Name.txt" /WindowsPath $DjoinDestination /LocalOS #注入开机运行脚本 $ScriptFolder=$DriveLetter+"\Windows\Setup\Scripts\" $Scriptname=$Scriptfolder+"FirstRun.ps1" If (Test-Path $ScriptFolder) {} Else { New-Item $ScriptFolder -ItemType Directory Copy-Item "$SourcePath\Scripts\*" $ScriptFolder -Force } #DisMount模板VHDX dismount-diskp_w_picpath $Template_VHDX #Remove应答文件和Djoin文件 Remove-Item -Path $DjoinSource Remove-Item -Path $UnattendXml #Copy虚拟机VHDX文件 New-item -path $VM_RemotePath\$VM_Name -name "Virtual Hard Disks" -ItemType directory Copy-Item -Path $Template_VHDX -Destination $VM_VHDRemotePath #新建虚机 New-VM –Name $VM_Name -ComputerName $VM_HostName –Generation 2 -MemoryStartupBytes $VM_Memory -SwitchName $NetworkSwitch –Path $VM_Path -VHDPath $VM_VHDPath #设置CPU个数 Set-VM -Name $VM_Name -ComputerName $VM_HostName -ProcessorCount $VM_CpuCount #禁用动态内存功能 #Set-VMMemory -Name $VM_Name -ComputerName $VM_HostName -DynamicMemoryEnabled $False #添加DVDDrive Get-VM -Name $VM_Name -ComputerName $VM_HostName |Add-VMDvdDrive -ControllerNumber 0 #设置VLANID #Set-VMNetworkAdapterVlan -ComputerName $VM_HostName -VMName $VM_Name -Access -VlanId 1112 #通过SCVMM分配静态MACAddress #Import-Module virtualmachinemanager Read-SCVMHost -VMHost $VM_HostName |Out-Null $VM=Get-SCVirtualMachine -Name $VM_Name $Adapter=$VM.VirtualNetworkAdapters[0] Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $Adapter[0] -MACAddressType "Static" -MACAddress "00-00-00-00-00-00" |Out-Null #启动虚机 #Start-VM -Name $VM_Name -ComputerName $VM_HostName Start-SCVirtualMachine -VM $VM_Name
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
按需开发可以根据自己的需求进行定制,网站设计、做网站构思过程中功能建设理应排到主要部位公司网站设计、做网站的运用实际效果公司网站制作网站建立与制做的实际意义当前名称:PowerShell批量部署Hyper-VWindows虚机-创新互联
路径分享:http://hbruida.cn/article/ispsh.html