Winners VI toolkit scripting contest

The winners of the VI toolkit scripting contest are announced:

– The first prize goes to LucD for his Guest Provisioning System script.

– The Second prize goes to tzamora for his VMware Infrastructure Power Documenter script.

– The Third prize goes to Dan Baskette with his PowerVDI script.

The Healthcheck script that i created has not won 🙁

You can read the rest @ the VMware Powershell Blog

For all VI toolkit contributions check this link

VI Toolkit Update 1 released


VMware has released VI Toolkit Update 1. There where performance problems with the get-VM command.

Some users had reported slowness when using the Get-VM cmdlet. The reason turned out to be an odd quirk in querying some types of network adapters, so many people weren’t affected at all. On the other hand, if you were affected, it was pretty annoying. To address this we’ve released Update 1 of our toolkit. If you’ve had trouble with Get-VM, download it things will go a lot smoother. One user reported that his queries went from more than 5 minutes to just over 10 seconds — a world of difference!

This is the only change we made to the toolkit, so don’t expect lots of new functionality when you download, you’ll have to wait a bit longer for that. If you haven’t had any trouble with 1.0 it’s perfectly fine to keep using it until the next release.

Also, many of you are probably eagerly anticipating the results of our scripting contest. I want to thank everyone for participating and point out that the entries are now open to the public. Check it out, there’s a lot of really great stuff in there.

VMware Powershell Healthcheck script

Healthcheck is a Powershell script that reports information like snapshots, VMware tools version, datastore space, CDROM and/or floppy drives connected etc. to HTML and e-mail the output to a person or distribution list.

Reason for creating this script:

As VMware Consultant I see a lot of common problems in VMware environments like:

– Snapshots are enabled and forgot the commit to the VM.

– Datastores are almost full (for example if snapshots are enabled)

– VMware tools versions are different

– CDROM and floppy drives are still mounted to the VM

– Virtual Machines have CPU and Memory limits or reservations (VMs are swapping)

– In the VM, the VMware Tools timesync option is not enabled

In the Virtual Infrastructure Client (VIC) it is difficult to see this sort of information. By creating a Powershell script,  I can do a quick inventory.  In a lot of VMware environments I created a scheduled tasks, so the script runs once a week and sent to HTML rapport to the administrator.

What does the script:

I wrote a Powershell script with HELP from the VMTN community that makes a HTML file and sent the output by e-mail to a person or distribution list.  The Healthcheck script does the following checks:

– VMware ESX hardware

– VMware ESX versions

– VMware VirtualCenter versions

– Active snapshots

– CDROM and Floppy drive(s) mounted to the VM

– Datastore information like capacity, free space and the percentage free space

– VirtualMachine (VM) information like VMware tools version, CPU, Memory reservations and limits etc.

– On what VMs VMware Tools timesync is not enabled


The following software must be installed:

Microsoft Powershell 1.0 (

VMware Infrastucture (VI) toolkit for Windows 1.0

Set the ExecutionPolicy in Windows Powershell to RemoteSigned by using the following command:

set-ExecutionPolicy RemoteSigned


– Unzip the script to a directory on the VC server for example.

– When the ZIP if unpacked there are two files:

– Healthcheck.ps1, this is the Powershell script

– Style.CSS, controls the HTML layout


– Edit the Powershell.ps1 file

edit the following variables:


Enter the VC server, if you execute the script on the VC server you can use the localhost name

Specify the location where to store the HTML output

Enable (yes) or disable (no) to sent the script by e-mail

$smtpServer = “”
Specify the SMTP server in your network

$mailfrom = “VMware Healtcheck <>”
Specify the from field

$mailto =

Specify the address where the e-mail to sent  to


Manually run the Healthcheck.ps1 script”:

1. Open Powershell

2. Browse to the directory where the Healthcheck.ps1 script resides

3. enter the command:


To create a schedule task in for example Windows 2003 use the following syntax in the run property:
Powershell -command “& ‘path\Healthcheck.ps1’
edit the path

Powershell -command “& ‘path\Healthcheck.ps1’

edit the path .


– List Orphaned VMDK’s

– Add performance information like VM usage

– Check timesync on the VMware hosts

Happy testing 🙂

Download Link: Healthcheck script

The script is posted on the VMware Powershell contest forum, link

Some screenshots of the HTML output: