I am going to share a VMware tidbit with you, something that some of you may already know, but for those of you that don’t, it might help out a little bit. This is particularly aimed at the VMware Workstation crowd. OK, first let me setup the background here. I have a virtual machine that I use for development all the time. It’s running on my laptop, along with my dev tools. I can open VMware workstation and then select the machine I want and fire it up and then close Workstation (since it is set to keep VM’s running when Workstation closes) and all that, but this is time consuming and somewhat aggravating if I am in a hurry. The point is, I am lazy and nit picky and making all those clicks and waiting for programs to load is tedious, especially when I sometimes do it several times a day.
So, I found a nifty little command in the directory where VMware Workstation is installed called vmrun.exe. This command allows you to manipulate your VM’s on the command line. With it you can start and stop, pause, take snapshots of your VM’s, plus many, many more actions. Look at the bottom of this article for more information, I have included the output of vmrun.exe’s usage text, and there is a bunch of stuff there!
Now, back to the article here and my purpose for writing it, what I wanted was a quick and easy way to fire up or start that virtual machine so I could use it when needed, but not have to go through all of the above mentioned steps and wait times. What I came up with was a quick little batch file that when executed, uses that vmrun.exe command to start my virtual machine, easy as pie.
Literally one click and the rest is history. It still takes a minute or two for the machine to boot (luckily it’s a virtual machine running Linux (Debian), so it boots quickly!). Here is the batch file, it’s not fancy but the big thing to illustrate is the usage of the vmrun.exe command:
@echo off
D:
cd "\vmachines\Dev LAMP Server\"
"C:\Program Files\Vmware7\vmrun.exe" start "Dev LAMP Server.vmx"
The batch file is fairly self explanatory, but let me step through it anyway. Line one just turns off the command prompt/console echo. Line two changes to the D drive where the virtual machines are located. Line three changes the directory to the one specifically for the virtual machine that I want to start. Finally, line four fires up the vmrun.exe command with the start operator, which will then start the virtual machine that is specified right after that. You’ll notice the virtual machine name is in quotes, you have to do that if there are spaces in the name, otherwise it will fail. The same goes for the vmrun.exe command path, if there are spaces (like between program and files), you have to have quotes! There you have it, it’s just that simple! Give it a shot and let me know how it goes for you. Drop a comment if you have any questions. Enjoy!!
vmrum.exe Command Usage Output
vmrun version 7.1.5 build-491717
Usage: vmrun [AUTHENTICATION-FLAGS] COMMAND [PARAMETERS]
AUTHENTICATION-FLAGS
--------------------
These must appear before the command and any command parameters.
-h (not needed for Workstation)
-P (not needed for Workstation)
-T (ws|server|server1|fusion|esx|vc|player)
for example, use '-T server' for VMware Server 2.0
use '-T server1' for VMware Server 1.0
use '-T ws' for VMware Workstation
use '-T esx' for VMware ESX
use '-T vc' for VMware vCenter Server
-u (not needed for Workstation)
-p (not needed for Workstation)
-vp
-gu
-gp
POWER COMMANDS PARAMETERS DESCRIPTION
-------------- ---------- -----------
start Path to vmx file Start a VM or Team
[gui|nogui]
stop Path to vmx file Stop a VM or Team
[hard|soft]
reset Path to vmx file Reset a VM or Team
[hard|soft]
suspend Path to vmx file Suspend a VM or Team
[hard|soft]
pause Path to vmx file Pause a VM
unpause Path to vmx file Unpause a VM
SNAPSHOT COMMANDS PARAMETERS DESCRIPTION
----------------- ---------- -----------
listSnapshots Path to vmx file List all snapshots
[showTree] in a VM
snapshot Path to vmx file Create a snapshot
Snapshot name of a VM
deleteSnapshot Path to vmx file Remove a snapshot
Snapshot name from a VM
[andDeleteChildren]
revertToSnapshot Path to vmx file Set VM state to a
Snapshot name snapshot
RECORD/REPLAY COMMANDS PARAMETERS DESCRIPTION
---------------------- ---------- -----------
beginRecording Path to vmx file Begin recording a VM
Snapshot name
endRecording Path to vmx file End recording a VM
beginReplay Path to vmx file Begin replaying a VM
Snapshot name
endReplay Path to vmx file End replaying a VM
GUEST OS COMMANDS PARAMETERS DESCRIPTION
----------------- ---------- -----------
runProgramInGuest Path to vmx file Run a program in Guest OS
[-noWait]
[-activeWindow]
[-interactive]
Complete-Path-To-Program
[Program arguments]
fileExistsInGuest Path to vmx file Check if a file exists
in Guest OS
Path to file in guest
setSharedFolderState Path to vmx file Modify a Host-Guest
shared folder
Share name
Host path
writable | readonly
addSharedFolder Path to vmx file Add a Host-Guest
Share name shared folder
New host path
removeSharedFolder Path to vmx file Remove a Host-Guest
Share name shared folder
enableSharedFolders Path to vmx file Enable shared folders
[runtime] in Guest
disableSharedFolders Path to vmx file Disable shared folders
[runtime] in Guest
listProcessesInGuest Path to vmx file List running processes
in Guest OS
killProcessInGuest Path to vmx file Kill a process in
process id Guest OS
runScriptInGuest Path to vmx file Run a script in
[-noWait] Guest OS
[-activeWindow]
[-interactive]
Interpreter path
Script text
deleteFileInGuest Path to vmx file Delete a file in
Path in guest Guest OS
createDirectoryInGuest Path to vmx file Create a directory in
Directory path in guest Guest OS
deleteDirectoryInGuest Path to vmx file Delete a directory in
Directory path in guest Guest OS
listDirectoryInGuest Path to vmx file List a directory in
Directory path in Guest OS
guest
CopyFileFromHostToGuest Path to vmx file Copy a file from host
Path on host Path in guest OS to guest OS
CopyFileFromGuestToHost Path to vmx file Copy a file from guest
Path in guest Path on host OS to host OS
renameFileInGuest Path to vmx file Rename a file in Guest
Original name OS
New name
captureScreen Path to vmx file Capture the screen of
Path on host the VM to a local file
writeVariable Path to vmx file Write a variable in
[runtimeConfig|guestEnv] the VM state
variable name
variable value
readVariable Path to vmx file Read a variable in
[runtimeConfig|guestEnv] the VM state
variable name
VPROBE COMMANDS PARAMETERS DESCRIPTION
--------------- ---------- -----------
vprobeVersion Path to vmx file List VP version
vprobeLoad Path to vmx file Load VP script
'VP script text'
vprobeLoadFile Path to vmx file Load VP file
Path to VP file
vprobeReset Path to vmx file Disable all vprobes
vprobeListProbes Path to vmx file List probes
vprobeListGlobals Path to vmx file List global variables
GENERAL COMMANDS PARAMETERS DESCRIPTION
---------------- ---------- -----------
list List all running VMs
upgradevm Path to vmx file Upgrade VM file format,
virtual hw
installTools Path to vmx file Install Tools in Guest
register Path to vmx file Register a VM
unregister Path to vmx file Unregister a VM
listRegisteredVM List registered VMs
deleteVM Path to vmx file Delete a VM
clone Path to vmx file Create a copy of the VM
Path to destination vmx file
full|linked
[Snapshot name]
Examples:
Starting a virtual machine with Workstation on a Windows host
vmrun -T ws start "c:\my VMs\myVM.vmx"
Stopping a virtual machine on an ESX host
vmrun -T esx -h https://myHost.com/sdk -u hostUser
-p hostPassword stop "[storage1] vm/myVM.vmx"
Running a program in a virtual machine with Workstation
on a Windows host
with Windows guest vmrun -T ws -gu guestUser
-gp guestPassword runProgramInGuest
"c:\my VMs\myVM.vmx" "c:\Program Files\myProgram.exe"
Running a program in a virtual machine with Server on
a Linux host with Linux guest
vmrun -T server -h https://myHost.com:8333/sdk
-u hostUser -p hostPassword -gu guestUser
-gp guestPassword runProgramInGuest
"[standard] vm/myVM.vmx" /usr/bin/X11/xclock
-display :0
Creating a snapshot of a virtual machine with
Workstation on a Windows host
vmrun -T ws snapshot "c:\my VMs\myVM.vmx" mySnapshot
Reverting to a snapshot with Workstation on a Windows host
vmrun -T ws revertToSnapshot "c:\my VMs\myVM.vmx"
mySnapshot
Deleting a snapshot with Workstation on a Windows host
vmrun -T ws deleteSnapshot "c:\my VMs\myVM.vmx"
mySnapshot
Enabling Shared Folders with Workstation on a Windows host
vmrun -T ws enableSharedFolders "c:\my VMs\myVM.vmx"
I do take into account each of the methods you could have presented on the article. They can be incredibly begging which enables it to undoubtedly do the job. Nonetheless, this articles are extremely limited for basic publishing.