Patching your ESXi Host – Without vCenter

VMware Update Manager is the Enterprise tool for Patching your ESX Hosts and for some also the tool used to patch your Windows / Linux Guests as well.

This is all fine and dandy, but what is you do not have all of your ESXi hosts connected to your vCenter?

Why would you so that – you may ask? Well in my environment, we have several labs that are running their Environment on a ESXi Whitebox,with the free ESXi License. No vCenter, and central management is not that easy.

Now you could update all of these hosts with the VMware infrastructure Update Client and I showed in a previous post – how you can upgrade from ESX3i to ESX4i with this tool. To update the patches is more or less the same.

Today I was asked to automate this process for a number of ESX3i hosts that were all at
build 123629 (ESX3i U2) and update them to build 199239 (ESX3i U4).

I did this with the GUI client, but it was too cumbersome, so I looked for another method.

I downloaded the package from VMware. This contents of the zip file are below.


As you can see the contents of this bundle contain 3 separate Updates.

(The three ESXi patches for Firmware “I”, VMware Tools “T,” and the VI Client “C” are contained in a single offline “O” download file.)

After Unpacking the 3 patches I was left with this:


In each folder there is an exe file:


The Command Syntax:


Allowed options:  
  -? [ --help ]         Display program usage

  -h [ --host ] arg     ESX host name  
  -u [ --userName ] arg User name  
  -p [ --password ] arg Password

So all you need to do is:

remoteInstall.exe –h <HOSTNAME> –u <USERNAME> –p <PASSWORD>

While the patch is installing the output on the screen is is the progress:

progress: 0  
progress: 5  
progress: 7  
progress: 100  

Run this for both 3 patches, reboot your ESXi Host, and you are done

To automate the process I created  a small batch file update.bat (I did not use Powershell – because not all the end-users have Powershell installed – YET!! )

echo off

set host=%1  
set user=%2  
set password=%3**

if "%1" == "" goto error  
if "%2" == "" goto error  
if "%3" == "" goto error**

for /f "tokens=*" %%i in ('dir *. /b') do (  
cd %%i  
echo Installing patch %%i .....  
remoteinstall.exe -h %host% -u %user% -p %password%  
cd ..  
echo Patching Complete !!**

echo ==========================================================  
echo = Missing command line parameter!  
echo ==========================================================  
echo =  
echo = Command Line Parameters:  
echo =         update.bat hostname/ip username password  
echo =  
echo = Example:  
echo =         update.bat root 123456  
echo ==========================================================  
goto end**


The script accepts 3 parameters: user host password, for example:

update.bat myesxhost root 123456

Reboot your host – and yep you are upgraded.

And thanks to Dave Mishchenko for the information.