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

2 快速克隆100台Workstation虚拟机方法

在上一节的内容中,无论是创建"完全克隆"的虚拟机还是"克隆链接"的虚拟机,都是在VMware Workstation的图形界面中以向导的方式创建的,每次创建一个虚拟机都需要多个步骤才能完成。在创建的虚拟机数量有限的情况下,使用图形界面创建虚拟机还可以接受,如果需要批量创建多台虚拟机,例如创建几十台、上百台甚至上千台虚拟机时,反复的操作会让人"崩溃"。本文介绍采用VMware 提供的命令行工具vmrun.exe并通过编写批处理脚本的方式,实现虚拟机的批量创建、批量启动与批量关机。

2.1 vmrun命令简介

vmrun.exe是VMware Workstation中提供的一个命令行接口程序,可以实现对VMware Workstation虚拟机或远程VMware ESXi虚拟机的大多数管理功能,例如虚拟机的电源管理(开机、关机、休眠、重启、暂停、恢复)、快照管理(创建快照、列出快照、删除快照、恢复到指定快照点)、客户机命令管理(执行客户机中程序、添加管理共享文件夹、列表客户机进程、清除客户机进程)、注册虚拟机、删除虚拟机、克隆虚拟机等功能。

vmrun.exe保存在"C:\Program Files (x86)\VMware\VMware Workstation"文件夹中,可以在命令行中执行该程序。在命令窗口中进入C:\Program Files (x86)\VMware\VMware Workstation文件夹,执行vmrun /?可以查看帮助参数。vmrun的命令格式如下:

vmrun 认证标志 命令 参数

vmrun [AUTHENTICATION-FLAGS] COMMAND [PARAMETERS]

其中"认证标志(AUTHENTICATION-FLAGS)"包括以下选项。

--------------------

-h <hostName>  (用于VMware Server、VMware ESXi、ESX Server,不适用于Workstation)

-P <hostPort>  (用于VMware Server、VMware ESXi、ESX Server,不适用于Workstation)

-T <hostType> (ws|server|server1|fusion|esx|vc|player)

其中:

-T serve  用于 Server 2.0

-T server1 用于 Server 1.0

-T ws 用于 VMware Workstation

-T ws-shared 用于 VMware Workstation (shared mode)

-T esx 用于 VMware ESX

-T vc 用于 VMware vCenter Server

-u <主机系统用户名>  (不适用于Workstation)

-p <主机系统用户密码>  (不适用于Workstation)

-vp <加密虚拟机的密码>

-gu <客户机系统用户,客户机,指Workstation或ESXi的虚拟机>

-gp <客户机系统用户密码>

vmrun的命令包括POWER(电源)、SNAPSHOT(快照)、GUEST OS(客户机操作系统)、GENERAL(常规)等几项命令,每个命令又有参数及可选参数。下面介绍主要的vmrun命令。

为了在命令提示窗口中的任何位置执行vmrun.exe命令,你可以将vmrun.exe程序所在的路径添加到系统的PATH路径中。

(1)进入"系统属性",在"高级"选项卡中单击"环境变量"按钮,如图5-3-1所示。

图5-3-1 环境变量

(2)在"环境变量"中的"系统变量"中找到Path,单击"编辑"按钮,在"变量值"后面先输入一个英文的分号(:),然后将vmrun.exe程序的路径(C:\Program Files (x86)\VMware\VMware Workstation )"粘贴"到此,如图5-3-2所示。然后单击"确定"按钮完成设置。

图5-3-2 添加Path路径

【说明】当前示例计算机添加后的环境变量如下:

C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\VMware\VMware Workstation

你可以进入命令提示窗口之后通过执行path命令查看这一参数,如图5-3-3所示。

1 POWER COMMANDS(电源命令)。

POWER COMMANDS包括start(启动虚拟机或Team)、stop(关闭虚拟机或Team)、reset(虚拟机复位命令,可选参数为hard或soft)、suspend(休眠)、pause(暂停,暂停虚拟机的运行)、unpause(从暂停恢复)。这些命令的参数为"Path to vmx file",即包括详细路径的虚拟机配置文件。

例如,在一台Windows主机中(当前安装了VMware Workstation),启动一个虚拟机的命令如下。

vmrun -T ws start "c:\my VMs\myVM.vmx"

在安装了VMware Workstation的Windows主机中,启动远程ESXi主机中一个虚拟机的命令如下。

vmrun -T esx -h https://esxi主机的IP地址或域名/sdk -u hostUser -p hostPassword stop "[storage1] vm/myVM.vmx"

如果要停止、重启、休眠虚拟机,只要将这start换成stop、reset、suspend即可。

如果要在Mac计算机上安装了VMware Fusion,想启动其中的虚拟机,则需要如下的命令。

vmrun -T fusion start "~/Documents/Virtual Machines.localized/XP/XP.vmx"

2 SNAPSHOT COMMANDS(快照命令)

使用snapshot命令,可以管理指定虚拟机的快照,包括listSnapshots(列出指定虚拟机的快照,可选参数showTree,以树型方式显示)、snapshot(为指定虚拟机创建快照)、deleteSnapshot(删除快照)、revertToSnapshot(恢复到指定快照)。

例如在一台安装了VMware Workstation的Windows主机中,有一台Windows Server 2008 R2的虚拟机,这个虚拟机有多个快照,如图5-3-4所示。

图5-3-4 查看当前虚拟机的快照

如果要显示该虚拟机的所有快照,可以执行如下命令:

vmrun -t ws listsnapshots "F:\VM_Temp\WS08R2-SP1数据中心版\WS08R2-SP1.vmx"

如果要以树型方式显示快照,则在vmx文件后面添加showtree参数。

vmrun -t ws listsnapshots "F:\VM_Temp\WS08R2-SP1数据中心版\WS08R2-SP1.vmx" showtree

该命令执行的结果如图5-3-5所示。图5-3-5 命令执行结果

3 GUEST OS COMMANDS(客户机系统命令)

使用GUEST OS COMMANDS命令参数,可以检查指定虚拟机中文件(fileExistsInGuest)或目录(directoryExistsInGuest)是否存在、设置共享文件夹(setSharedFolderState)、删除共享文件夹(removeSharedFolder)、启动虚拟机中指定的程序(runProgramInGuest)、列出虚拟机中执行程序进程、在虚拟机与主机之间拷贝文件等。

(1)runProgramInGuest ,在客户机中执行程序,必须参数为包括详细路径的vmx文件,可选参数为                         -noWait、-activeWindow、-interactive。

例如,当前有一台Windows XP的虚拟机正在运行(这个虚拟机的配置文件为c:\VMS\XP\XP.vmx,如

图5-3-6所示。图5-3-6

一台正在运行的XP虚拟机

(2)当前虚拟机的登录帐户为Linna,密码为1234,如图5-3-7所示。

(3)如果要在主机,启动这个虚拟机中的"计算器"程序,则可以执行如下命令

vmrun -T ws  -gu linna  -gp 1234 runProgramInGuest "C:\VMS\Xp\XP.vmx" "C:\windows\system32\calc.exe"

如图5-3-8所示。

图5-3-8 让虚拟机启动指定程序

在图3-3-8中,当虚拟机中的"计算器"程序退出时,命令提示符中命令行才会返回到C:提示符。如果不想让执行的程序"退出"后才返回到命令行,则可以添加-noWait。

vmrun -T ws  -gu linna  -gp 1234 runProgramInGuest "C:\VMS\Xp\XP.vmx"-nowait "C:\windows\system32\calc.exe"

(4)如果要检查虚拟机C:\temp中是否存在test.txt文件,则执行

vmrun -T ws  -gu linna  -gp 1234 fileExistsInGuest "C:\VMS\Xp\XP.vmx"   "C:\\TEMP\\test.txt"

如果要想检查c:\temp文件夹是否存在,则执行

vmrun -T ws  -gu linna  -gp 1234 directoryExistsInGuest "C:\VMS\Xp\XP.vmx"   "C:\\TEMP\\"

如果要执行脚本(脚本程序为c:\perl\perl.exe,脚本文件在根目录script.pl),格式如下。

vmrun -T ws  -gu linna  -gp 1234 runScriptInGuest C:\VMS\Xp\XP.vmx  C:\perl\perl.exe C:\script.pl

(5)如果要禁用共享文件夹(以C:\VMS\Xp\XP.vmx为例,下同),则执行

vmrun-T ws  -gu linna  -gp 1234 disableSharedFolders  "C:\VMS\Xp\XP.vmx"

如果要为指定虚拟机启用共享文件夹,则执行

vmrun-T ws  -gu linna  -gp 1234 enableSharedFolders  "C:\VMS\Xp\XP.vmx"

将主机D盘根目录为指定虚拟机设置为共享文件夹,设置共享名为DDDD,命令如下

vmrun-T ws  -gu linna  -gp 1234 addSharedFolder  "C:\VMS\Xp\XP.vmx"   DDDD D:\

(6)如果要列出虚拟机中所有进程,则执行如下命令。

vmrun-T ws  -gu linna  -gp 1234 listProcessesInGuest"C:\VMS\Xp\XP.vmx"

如图5-3-9所示。

如果要杀除某个进程(如图图5-3-9中的“记事本”进程,该进程ID为636),则执行

vmrun-T ws  -gu linna  -gp 1234 killProcessInGuest  "C:\VMS\Xp\XP.vmx"  636

(7)可以在主机与虚拟机之间拷贝文件,从主机到虚拟机拷贝文件命令为CopyFileFromHostToGuest,从虚拟机到主机拷贝文件命令为CopyFileFromGuestToHost。例如,如果要将主机g:\temp中的vncviewer-6.0.2.exe文件复制到虚拟机的C盘temp文件夹,命名为vnc2.exe,命令如下。

vmrun-T ws  -gu linna  -gp 1234 CopyFileFromHostToGuest  "C:\VMS\Xp\XP.vmx"   g:\temp\vncviewer-6.0.2.exe c:\temp\vnc2.exe

如果要复制的程序是带中文或空格,则需要用英文双引号包括,例如

vmrun-T ws  -gu linna  -gp 1234 CopyFileFromHostToGuest  "C:\VMS\Xp\XP.vmx"   "g:\temp\RAR3.51官方版.exe"  "c:\temp\RAR3.51官方版.exe"

如果要从虚拟机复制到主机,则命令如下(从虚拟机C盘temp复制RAR3.51官方版.exe到G盘temp中命名为rar.exe。

vmrun-T ws  -gu linna  -gp 1234 CopyFileFromGuestToHost  "C:\VMS\Xp\XP.vmx"   "c:\temp\RAR3.51官方版.exe""g:\temp\rar.exe"

(7)如果要列出所有正在运行的虚拟机,则执行

vmrun–t ws list

(8)如果要为指定的虚拟机安装VMware Tools,则执行

vmrun-T ws  installTools "C:\VMS\Xp\XP.vmx"

(9)如果要克隆虚拟机,则可以先关闭虚拟机,为虚拟机创建快照,之后再克隆虚拟机。

vmrun-T ws  stop  "C:\VMS\Xp\XP.vmx"

vmrun-T ws  snapshot  "C:\VMS\Xp\XP.vmx"  fix1

vmrun-T ws  clone  "C:\VMS\Xp\XP.vmx"  C:\VMS\XP01\XP01.VMX linked -snapshot=fix1  -cloneName=XP01

执行上述命令之后将为c:\vms\xp\xp.vmx虚拟机关机、创建一个名为fix1的快照,并从此快照创建出一个名为XP01、保存在c:\vms\xp01下的虚拟机。克隆的方式为“链接克隆”,如果要创建完全克隆的虚拟机,则参数改为full,命令如下。

vmrun-T ws  clone  "C:\VMS\Xp\XP.vmx"  C:\VMS\XP02\XP02.VMX full -snapshot=fix1  -cloneName=XP02

(9)如果要删除快照,例如删除c:\vms\xp\xp.vmx中的快照fix1,则执行:

vmrun -T ws deleteSnapshot "C:\VMS\Xp\XP.vmx"  fix1

2.2 编写脚本批量创建虚拟机

下面是一个编写好的批处理程序,可以实现批量创建虚拟机、批量启动虚拟机,并向虚拟机中添加配置文件、实现添加启用VNC连接并为不同虚拟机设置不同VNC连接端口的功能。

在本示例中,源虚拟机保存配置文件为“F:\VMS-2016\Windows 7\Windows 7.vmx”,该虚拟机安装好操作系统、应用程序之后关闭虚拟机。该脚本实现的功能主要如下。

(1)之后脚本会创建一个名为VM11的快照。

(2)克隆创建10个虚拟机(参数从1001到1010,如果你要修改虚拟机的数量,只需要修改文中的1010即可,例如要创建100个虚拟机则改为1100)。新克隆的虚拟机保存在F:\VMS-2017文件夹中。每个虚拟机分别保存在1001开始的子文件夹中,虚拟机名称以1001开始。

(3)向每个虚拟机添加启用VNC命令、添加虚拟机己复制命令、并指定VNC连接端口为虚拟机的顺序号,例如1001的虚拟机的VNC连接端口为1001。

(4)创建虚拟机完成后,可以间隔30秒启动虚拟机。如果你要修改启动间隔,修改ping -n 30 127.0.0.1中的30即可。

(5)之后可以间隔10秒停止虚拟机。

【注意】如果创建“克隆链接”的虚拟机,父虚拟机所在位置最好是在SSD磁盘,这样可以提高虚拟机的性能。如果要创建“完全克隆”的虚拟机,则将以下脚本中linked改为full。在实际的环境中,需要用你的虚拟机路径、克隆目标代替脚本中的路径。

编写的脚本内容如下。

REM 本批处理完成为虚拟机创建快照、从快照创建克隆链接的虚拟机、为虚拟机配置参数、启动虚拟机、停止虚拟机的功能

REM 王春海,2017年2月20日

C:

CD"C:\Program Files (x86)\VMware\VMware Workstation\"

REM 为指定的虚拟机,创建快照名称为VM11

vmrun-T ws snapshot "F:\VMS-2016\Windows 7\Windows 7.vmx" VM11

PAUSE 创建快照完成,按任意键继续

REM 创建克隆链接的虚拟机,克隆10个

for /l%%a in (1001,1,1010) do  (

vmrun.exe-T ws clone "F:\VMS-2016\Windows 7\Windows 7.vmx"  F:\VMS-2017\%%a\%%a.vmx  linked -snapshot=VM11  -cloneName=%%a

)

PAUSE 克隆虚拟机完成,按任意键继续

REM 启用VNC,端口%%b,密码为空

@echoon

for  /l  %%bin (1001,1,1010) do (

echoanswer.msg.uuid.altered = "I Copied It">>F:\VMS-2017\%%b\%%b.vmx

echoRemoteDisplay.vnc.enabled = "TRUE" >>F:\VMS-2017\%%b\%%b.vmx

echoRemoteDisplay.vnc.port = "%%b" >>F:\VMS-2017\%%b\%%b.vmx

remecho RemoteDisplay.vnc.key = "" >>F:\VMS-2017\%%b\%%b.vmx

)

pause 配置端口完成,按任意键继续

REM 克隆完成,间隔30秒启动虚拟机

for /l%%c in (1001,1,1010) do  (

vmrun.exe-T ws start F:\VMS-2017\%%c\%%c.vmx

ping-n 30 127.0.0.1 >nul

)

pause 启动虚拟机完成,按任意键继续

REM 下课,间隔30秒停止虚拟机

for /l%%d in (1001,1,1010) do  (

vmrun.exe-T ws stop F:\VMS-2017\%%d\%%d.vmx

ping-n 30 127.0.0.1 >nul

)

PAUSE 关闭所有正在运行的虚拟机完成,按任意键退出

我在参加51CTO学院4周年最受欢迎讲师的活动,看完文章请顺手投我(王春海)一票,谢谢!投票链接:

http://edu.51cto.com/activityvote/voteLec

下面是学院移动版最新测试功能:文章打赏。如果你感觉作者的文章写的不错,可以通过“支付宝”或“微信”奖励作者一些银子,不需要太多,一点心意就可,不奖励就请投票吧,谢谢!

时间: 2024-10-24 18:48:48

在VMware Workstation中批量创建上千台虚拟机(下)的相关文章

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

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

在VMWare Workstation中以独占显示像操作物理机一样使用当前虚拟机?

在VMWare Workstation中以独占显示像操作物理机一样使用当前虚拟机? ?Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者博客:https://blog.51cto.com/lander IT Helpdesk 工程师实战培训课程:https://edu.51cto.com/lecturer/733218.html轻松进外企:IT Helpdesk工程师实战自学之路:https://blog.51cto.com/lander/2413

VMware Workstation中Linux虚拟机安装VMware-Tools

VMware workstation 中的Linux虚拟机下安装VMware-Tools 作者语:在VMware Workstation下安装完windows的操作系统后,你会很easy的就可以将VMware-Tools也安装了,但是如果你安装的是Linux操作系统(例如:Red Hat.CentOS等)你要怎样安装Vmware-Tools呢?下面我们来介绍如何安装. 首先,在你的VMware Workstation的Linux虚拟机上点击右下角的光盘,右键将该光盘卸载(这个光盘应该是你安装Li

VMware Workstation中网络连接之桥接、NAT和Host-only

在Windows XP系统中,安装好VMware Workstation虚拟机软件以后,我们可以查看一下"网络连接"窗口: 在窗口中多出了两块网卡: VMware Network Adapter VMnet1:VMware网络连接中Host-only模式的网络接口. VMware Network Adapter VMnet8:VMware网络连接中NAT模式的网络接口. 查看VMware的网络连接模式:桥接.NAT和Host-only 1. 假设我们已经安装好了Windows XP虚拟

实现VMware Workstation中的CentOS 6.6 上网的方法

Windows系统是Win 8,虚拟机中的系统是CentOS 6.6. 一.启动虚拟机的时候,可能会提示内部错误. 解决的方法是在启动VMware Workstation的时候,选择以管理员身份运行. 二.VMware Workstation中的Cent OS 6.6可以上网的方法. 1.设置虚拟机的网络连接方式为NAT.启动虚拟机. 2.在window系统中,我的电脑右键点击→管理,可进入[计算机管理]界面,然后单击[计算机管理]界面左侧的[服务和应用程序]下的[服务],找到VMware DH

VMware Workstation Pro 12 创建虚拟机(安装Ubuntu)

为了在VMware Workstation下创建一个虚拟机,折腾了大半天,现把比较顺利的创建办法记录下来: VMware Workstation版本: 创建步骤: 1.VMware Workstation主页单击"创建新的虚拟机",或者单击"文件"下的"新建虚拟机",弹出"新建虚拟机向导" 2.选择"典型"配置,单击"下一步" 3.选择"稍后安装操作系统(S)",单击

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

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

在最近的工作中,需要创建一批类似的机器.在VMware中创建了模板,然后根据自义向导部署之后,发现可以快速的完成新vm的部署.系统中的计算机名,IP地址都可以自动的完成更新.唯一的缺点是,系统自带的向导每次只能完成一台vm的安装.所以,必须寻找合适的方法,使得这个工作可以批量完成. 首先需要在Windows的powershell上安装VMware的Powercli.以管理员身份运行一个powershell的窗口,输入以下命令: Install-Module -Name VMware.PowerC

VMware Workstation中虚拟机网络配置

一直用的vmware的虚拟机以及UVP还有cirtix的虚拟机,然后对vmware workstation却一窍不通,这个怎么了得,下面介绍一下我学习中遇到的问题及解决办法. 一.准备工作: vmware workstation11的下载地址为http://xiazai.sogou.com/detail/34/13/3543595921374893595.html?w=1927: OPENSUSE的操作系统下载地址:http://www.9553.com/soft/13723.htm 二.安装v