VMware Healthcheck script

    VMware Healtcheck script

    Introduction:

    Healthcheck is a Powershell script that reports information like snapshots, VMware tools version, datastore space, CDROM and/or floppy drives connected, VM details etc. to HTML and e-mail the output. This script can be scheduled so that for example you get every week a rapport in your mailbox with the status of the VMware environment.

     

    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

     

    Requirements:

    The following software must be installed:

     

    Microsoft Powershell 1.0 (http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx)

     

    VMware Infrastucture (VI) toolkit for Windows 1.0

     

    http://www.vmware.com/download/sdk/

     

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

     

    set-ExecutionPolicy RemoteSigned

     

     

     

    Installation:

    • Unzip the Healthcheck.zip 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

     

    Configuration:

    • Edit the Powershell.ps1 file

     

    edit the following variables:

     

    $vcserver="localhost"

     

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

     

    $filelocation="D:\temp\Healthcheck.htm"

    Specify the location where to store the HTML output

     

    $enablemail="yes"

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

     

    $smtpServer = "mail.ivobeerens.nl"

    Specify the SMTP server in your network

     

    $mailfrom = "VMware Healtcheck <mailto:powershell@ivobeerens.nl>"

    Specify the from field

     

    $mailto = mailto:ivo@ivobeerens.nl

     

    Specify the address where the e-mail to sent to

     

     

     

    Usage:

    Manually run the Healthcheck.ps1 script":

     

    1. Open Powershell

     

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

     

    3. enter the command:

     

    ./Healthcheck.ps1

     

    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 .

     

     

    Future:

    • List Orphaned VMDK's

     

    • Add performance information like VM usage

     

    • Check timesync on the VMware hosts

     

    Happy testing http://communities.vmware.com/images/emoticons/happy.gif