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:
C:\ESXe350-200910402-T-BG>remoteInstall.exe 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 !!** :error 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 18.104.22.168 root 123456 echo ========================================================== goto end** :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.