In this blog post, we are going to talk about VMware ESXi and the ability to start & stop a virtual machine from the ESXi shell.
Recently, I ran into a situation where the vCenter Server was powered-off manually and the ESXi host that was responsible was not able to open the VMware Host Client to start VMware vCenter with a single mouse click. So it was time to figure out how to boot a virtual machine from the VMware ESXi shell.
I was lucky because SSH was enabled on the ESXi Host so I was able to connect and log in with the root account, but then I ran into the issue… Which command do I need to power on a virtual machine? I knew for sure that it was possible but it took me some time to find the right commands.
So based on that experience, it was time for a quick write-up to show you how to boot a virtual machine from the shell with VMware ESXi. To complete the article I also added the commands for powering off.
Note: The environment was running on vSphere 6.7 Update 2. So all commands are valid for vSphere 6.7 and probably older versions of VMware vSphere.
Start a Virtual Machine from Shell
Here is a step-by-step procedure for booting a virtual machine from the VMware ESXi shell.
# Step 01: Connect with SSH (for example Putty).
# Step 02: Login as a user with root privileges
# Step 03a: View ESXi host virtual machine inventory
vim-cmd vmsvc/getallvms
# Step 03b: View ESXi host virtual machine inventory with filter
vim-cmd vmsvc/getallvms | grep %VMname%
# Step 04: Write-down the VMid, in my case:
183
# Step 05: Verify the current power status
vim-cmd vmsvc/power.getstate %VMid%
# Step 06: Power-on virtual machine
vim-cmd vmsvc/power.on %VMid%
# Step 07: Command has been executed the virtual machine will be power-on. To verify you can use:
vim-cmd vmsvc/power.getstate %VMid%
Screenshots
Here are the screenshots of performing a VMware vCenter virtual machine startup from the VMware ESXi shell.
Stop a Virtual Machine from Shell
Here is the procedure for stopping a virtual machine from the VMware ESXi Shell.
# Step 01: Connect with SSH (for example Putty).
# Step 02: Login as a user with root privileges
# Step 03a: View ESXi host virtual machine inventory
vim-cmd vmsvc/getallvms
# Step 03b: View ESXi host virtual machine inventory with filter
vim-cmd vmsvc/getallvms | grep %VMname%
# Step 04: Write-down the VMid, in my case:
183
# Step 05: Verify the current power status
vim-cmd vmsvc/power.getstate %VMid%
# Step 06: Power-on virtual machine
vim-cmd vmsvc/power.off %VMid%
# Step 07: Command has been executed the virtual machine will be power-off. To verify you can use:
vim-cmd vmsvc/power.getstate %VMid%
Conclusion
You can easily perform this procedure if you know the right commands. There is not a lot of new information available about the vim-cmd command but I added the source(s) below.