如何在Windows中批量创建VMware的虚拟机

在最近的工作中,需要创建一批类似的机器。在VMware中创建了模板,然后根据自义向导部署之后,发现可以快速的完成新vm的部署。系统中的计算机名,IP地址都可以自动的完成更新。唯一的缺点是,系统自带的向导每次只能完成一台vm的安装。所以,必须寻找合适的方法,使得这个工作可以批量完成。

首先需要在Windows的powershell上安装VMware的Powercli。以管理员身份运行一个powershell的窗口,输入以下命令:

Install-Module -Name VMware.PowerCLI -AllowClobber

系统会提示是否要从不信任的源来安装模块,输入Y回车之后就开始自动安装了。

等待安装完毕后,可以查看当前安装的PowerCLI版本

Import-Module VMware.PowerCLI

Get-Module | FT -autosize

接下去就可以使用powershell对vCenter操作了。

Connect-VIServer -Server 10.10.10.10 -Username [email protected] -Password YourPassword

由于我有多台vCenter需要管理,在对话框中输入Y,以确保每次都要我输入连接的服务器。

由于Linux系统在使用模板功能部署时,由于MAC地址改变会引起网络不可用。需要修改/etc/udev/rules.d/70-persistent-net.rules文件才可以。所以,我们要充分利用vCenter的Customization Specications能来创建虚拟机。

在VMware中我们需要创建一个Customization Specifications用于虚拟机部署的基准配置。Customization Specifications分为三种,Fixed, Custom,VM。经过测试,其中Fixed可以正常用于我们自定义vm的部署。

New-OSCustomizationSpec -NamingScheme Fixed -OSType Linux -DnsServer 114.114.114.114,8.8.8.8 -Domain qishine.csdn -NamingPrefix $osname -Type Persistent -Name $Customization

接下去需要对现有的Customization Specification创建映射,映射的字段我们需要在csv文件中事先准备好。

Get-OSCustomizationSpec $Customization | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIp -IpAddress $IPAddress -SubnetMask $Subnetmask -DefaultGateway $DefaultGW

然后就可以根据我们预先定义的参数来创建并配置虚拟机了
New-VM -Name $VMName -OSCustomizationSpec $Customization -Template $Template -VMHost $VMHost -DiskStorageFormat $disktype -Datastore $Datastore -ResourcePool $ResourcePool | Set-VM -NumCpu $CPU -MemoryMB $Memory -Confirm:$false -RunAsync
Get-VM -Name $VMName | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $VLAN -Confirm:$false

整个CSV文件是这样的
name,host,datastore,template,customization,ipaddress,subnetmask,defaultgw,dns1,dns2,vlan,mem,cpu,resourcepool,osname,disktype
10.11.24.78-vm1,10.11.24.131,datastore1 (19),CentOS6.8,VM2,10.11.24.78,255.255.255.0,10.11.24.254,114.114.114.114,8.8.8.8,VM Network,1024,2,All,qishine-csdn1,Thick
10.11.24.79-vm2,10.11.24.131,datastore1 (19),CentOS6.8,VM2,10.11.24.79,255.255.255.0,10.11.24.254,114.114.114.114,8.8.8.8,VM Network,1024,2,All,qishine-csdn2,Thick
10.11.24.80-vm3,10.11.24.131,datastore1 (19),CentOS6.8,VM2,10.11.24.80,255.255.255.0,10.11.24.254,114.114.114.114,8.8.8.8,VM Network,1024,2,All,qishine-csdn3,Thick

然后将以下内容保存成ps1文件

$vms = import-csv -path "D:\VM\Deployvm2.csv"
foreach ($vm in $vms){

$VMName = $vm.name
$VMHost = $vm.host
$Datastore = $vm.datastore
$Template = $vm.template
$Customization = $vm.customization
$IPAddress = $vm.ipaddress
$Subnetmask = $vm.subnetmask
$DefaultGW = $vm.defaultgw
$DNS1 = $vm.dns1
$DNS2 = $vm.dns2
$VLAN = $vm.vlan
$Memory = $vm.mem
$CPU = $vm.cpu
$ResourcePool = $vm.resourcepool
$osname = $vm.osname
$disktype = $vm.disktype
New-OSCustomizationSpec -NamingScheme Fixed -OSType Linux -DnsServer 114.114.114.114,8.8.8.8 -Domain qishine.csdn -NamingPrefix $osname -Type Persistent -Name $Customization
Get-OSCustomizationSpec $Customization | Get-OSCustomizationNicMapping | Set-OSCustomizationNicMapping -IpMode UseStaticIp -IpAddress $IPAddress -SubnetMask $Subnetmask -DefaultGateway $DefaultGW
New-VM -Name $VMName -OSCustomizationSpec $Customization -Template $Template -VMHost $VMHost -DiskStorageFormat $disktype -Datastore $Datastore -ResourcePool $ResourcePool | Set-VM -NumCpu $CPU -MemoryMB $Memory -Confirm:$false -RunAsync
Get-VM -Name $VMName | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $VLAN -Confirm:$false
Remove-OSCustomizationSpec $Customization -Confirm:$false
Start-VM -VM $VMName -RunAsync
}

因为,Fixed的Customization Specification不支持重新定义NamingPrefix。所以,对于每一个vm,我都创建了一个Customization Specification并且在部署后删除。

有了两个文件后,我们就可以批量创建vm了。直接运行刚才创建的ps1文件。

等待命令完成后,我们就能在vCenter中或者SCVMM中看到这3台虚拟机了。

并且这些vm都会按照我们之前的定义自动配置系统中的IP和计算机名。然后就可以直接使用这些vm了。


注意,这些vm在开机后会重启一次,以应用我们自定义的内容。

原文地址:http://blog.51cto.com/qiyuwei/2315549

时间: 2024-10-24 04:17:53

如何在Windows中批量创建VMware的虚拟机的相关文章

在VMware Workstation中批量创建上千台虚拟机(上)

VMware Workstation 是我们经常使用的虚拟机软件,其功能强大,性能较好.大多数用户都会在"图形界面"中创建虚拟机.修改虚拟机配置.添加虚拟机参数,或者使用"克隆"功能创建多个虚拟机,这些都无需介绍. 但是你有没有想过 ● 将 VMware Workstation 创建的虚拟机,供网络中其他用户使用呢? ● 如果你想使用模板,创建几十.上百甚至上千个虚拟机,怎样才能做到呢? 本节通过两个具体的案例介绍这些应用. [说明] 这是"使用VMwar

在VMware Workstation中批量创建上千台虚拟机(下)

2 快速克隆100台Workstation虚拟机方法 在上一节的内容中,无论是创建"完全克隆"的虚拟机还是"克隆链接"的虚拟机,都是在VMware Workstation的图形界面中以向导的方式创建的,每次创建一个虚拟机都需要多个步骤才能完成.在创建的虚拟机数量有限的情况下,使用图形界面创建虚拟机还可以接受,如果需要批量创建多台虚拟机,例如创建几十台.上百台甚至上千台虚拟机时,反复的操作会让人"崩溃".本文介绍采用VMware 提供的命令行工具v

如何在Windows中打开多个Windows Media Player

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Windows中打开多个Windows Media Player. 如何在Windows中打开多个Windows Media Player

VBA excel中批量创建超链接代码(连接当前文档中的sheet)

excel中批量创建超链接代码(连接当前文档中的sheet),在sheet1中B列中要创建一系列的超链接,链接的内容是本文档中的其他sheet,如下图,在sheet1下创建宏,代码如下. Sub 宏1() Dim temp, temp2 Dim i, j j = 1 For i = 5 To 74 temp = "'G" & j & "'!A1" temp2 = "G" & j Range("B" &a

mysql 中批量创建日志表信息脚本

mysql中通过存储过程批量创建日志信息表脚本如下: drop PROCEDURE if EXISTS reqSp; DELIMITER // create procedure reqSp(sTime varchar(32), eTime varchar(32),tchema varchar(32)) begin declare sName varchar(128); declare uid varchar(128); declare orderId varchar(128); declare

如何在Windows中删除服务好系统来教你

如何在Windows 7,Windows 8和Windows 10中删除服务 服务是一种在没有用户界面的情况下在系统后台运行的应用程序类型,类似于UNIX守护程序进程.服务提供核心操作系统功能,例如Web服务,事件记录,文件服务,打印,加密和错误报告. 有时您可能需要删除服务.例如,安装的软件无法正确卸载,并将其服务保留在"服务"列表中. 本教程将向您展示如何在 Windows 7, Windows 8和 Windows 10中删除服务. 您必须以管理员身份登录才能删除服务. 建议不要

【转载】如何在Android中避免创建不必要的对象

在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用.这其中避免创建不必要的对象是一项重要的方面. Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的.所以避免创建不必要的对象对于Android开发尤为重要. 本文会介绍一些常见的避免创建对象的场景和方法,其中有些属于微优化,有的属于编码技巧,当然也有确实能够起到显著效果的方法. 使用单例 单例是我们常用的设计模式,使用这种模式,我们可以只提供一个对象供全局调用.因此单例

如何在Windows中编译Linux Unix的代码(采用cygwin)?

来源:http://www.cnblogs.com/rocky_yi/archive/2009/12/08/cygwin.html   作者:rocky_y 很多经典算法往往是用C++在linux下实现的,对长期从事windows开发的辛苦大众来说,想看这些算法的运行效果不得不费一点小功夫.今天捣鼓了一晚上才搞定这事,写出实现方法和大家共享. 第一步:下载安装新版Cygwin软件.该软件的官方网站:http://cygwin.com/  Cygwin软件的作用是让Windows拥有Unix-li

如何在Windows中编译Linux Unix的代码?

作者:rocky_yi  转自http://www.cnblogs.com/rocky_yi/archive/2009/12/08/cygwin.html 很多经典算法往往是用C++在linux下实现的,对长期从事windows开发的辛苦大众来说,想看这些算法的运行效果不得不费一点小功夫.今天捣鼓了一晚上才搞定这事,写出实现方法和大家共享. 第一步:下载安装新版Cygwin软件.该软件的官方网站:http://cygwin.com/  Cygwin软件的作用是让Windows拥有Unix-lik