如何在Windows中批量创建VMware的虚拟机
在最近的工作中,需要创建一批类似的机器。在VMware中创建了模板,然后根据自义向导部署之后,发现可以快速的完成新vm的部署。系统中的计算机名,IP地址都可以自动的完成更新。唯一的缺点是,系统自带的向导每次只能完成一台vm的安装。所以,必须寻找合适的方法,使得这个工作可以批量完成。
文章地址 https://blog.csdn.net/qishine/article/details/83961039
首先需要在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 administrator@vsphere.local -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在开机后会重启一次,以应用我们自定义的内容。
如何在Windows中批量创建VMware的虚拟机的更多相关文章
- 如何在windows中编写R程序包(转载)
网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...
- 如何在linux中批量建立用户并设置随机密码
Ubuntu是基于linux的免费开源操作系统,同时也是真正意义上的“多任务多用户”操作系统,既然是多用户系统,自然就涉及到创建多个用户的问题.同时由于Ubuntu系统中的root用户具有最高权限,无 ...
- 如何在Windows中手动生成SSH密钥?(转)
在Windows上,您可以通过多种方式创建SSH密钥.Windows需要SSH客户端,但在其操作系统上没有默认的SSH客户端.请注意,Windows目前正在测试本机OpenSSH应用程序,一般,不提倡 ...
- 如何在Windows中打开多个Windows Media Player
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Windows中打开多个Windows Media Player.
- 如何在CAD中批量打印图纸?这种方法你要知道
CAD图纸都是使用CAD制图软件进行设计出来的,图纸的格式均为dwg格式的,不方便进行使用.就需要将图纸进行打印出来.多张CAD图纸如果一张一张进行打印速度就会非常的慢,那就可以使用CAD中的批量打印 ...
- 如何在Word中批量选中特定文本
如何在Word中批量选中特定文本 举个例子,我们对如下文本进行操作,将文本中所有的“1111111”标红,所有的“2222222”标绿,所有的“3333333”标蓝 在Word中找到“查找”下的“高级 ...
- 如何在Windows环境下安装Linux系统虚拟机
如何在Windows环境下安装Linux系统虚拟机 本篇经验写给想要入门学习C语言的小白们.Windows系统因为使用窗口图形化,操作简单,功能多样,所以我们在Windows环境下可以做到很多,但想要 ...
- vmrun 批量创建vmware虚拟机
1 准备模板机 具体步骤如下: 1. 下载镜像安装系统 https://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/ 2. 安装完成配置好IP ,关闭 ...
- 浅谈ETL架构中ODS的作用以及如何在HaoheDI中自动创建ODS表
什么是ODS表? 在ETL架构中,源数据很少会直接抽取加载到数据仓库EDW,二者之间往往会设置一个源数据的临时存储区域,存储数据在清洗转换前的原始形态,通常被大家称做操作型数据存储,简称ODS,在Ki ...
随机推荐
- 神经网络可视化《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》
神经网络已经在很多场景下表现出了很好的识别能力,但是缺乏解释性一直所为人诟病.<Grad-CAM:Visual Explanations from Deep Networks via Gradi ...
- 正睿七连测 DAY5 T2
题是水题,也不难想,本来是想打暴力先过个小数据, 本来就想再搞搞优化试试能不能过,毕竟这个题理论上 O( $n^2$ ) 是能过的 题干 主要是觉得这个优化很有可取之处,本来超时,一加这个优化就好很多 ...
- ReentrantLock源码详解
前言 以前只知道ReentrantLock底层基于AQS实现,相对于(旧版本的)synchronized: 更轻量(基于CAS而不是管程),由JDK实现 可以实现公平/非公平 可中断等待 可绑定多个条 ...
- MySQL--SELECT检索语句
1.检索单个列 SELECT prod_name FROM products; --上述语句利用 SELECT语句从 products表中检索一个名为prod_name的列. 结束SQL:多条SQL语 ...
- APISpace万券齐发,API采购大放价
Eolink APISpace 是 Eolink 旗下专业的API 数据交易平台,上面拥有海量的API,开发者可以根据需求自由选择. 环境天气 全国天气预报,支持全国以及全球多个城市的天气查询,包含国 ...
- Template -「矩阵 - 行列式」
#include <cstdio> int Abs(int x) { return x < 0 ? -x : x; } int Max(int x, int y) { return ...
- 第十二天python3 匿名函数
python借助lambda表达式构建匿名函数: 参数列表不需要小括号: 冒号是用来分割参数列表和表达式的: 不需要使用return,表达式的值,就是匿名函数返回值: lambda表达式(匿名函数)只 ...
- 如何使用Solidity和Hardhat构建你自己的NFT以及NFT交易市场
目录 目录 目录 1.ERC721的基础知识 1.1.什么是不可替代代币? 1.2.什么是 ERC-721? 1.3.什么是元数据 1.4.如何在链上保存NFT的图像 2.HardHat 3.创建项目 ...
- PhpStorm 中文设置教程
本文仅供学习交流使用,如侵立删!demo下载见文末 Pycharm中文设置教程 1.首先打开PhpStorm ,点击file-settings.找到plugins,搜索Marketplace,然后搜索 ...
- selenium webDriver的运用
声明实例运行浏览器 配置浏览器驱动后,可以通过简单的2行代码就可以驱动浏览器(配置这里不加赘述) from selenium import webdriver driver = webdriver.C ...