1 year back I had written this script, and it became very much popular, Collect disk space detail and send it in email Powercli since then I started receiving emails for some more additions in the existing script. I am not a HTML guy but still tried to create one, Many of the people found they don't have to login each server to collect disk information, They just need to login vCenter (Powercli) which saves lots of time. Also to work this script correctly make sure all your VMs has VMWare Tools installed and running. Also my earlier script was pulling reports only for Windows and C drive.
I have improvised it little bit and added below information.
This is the screenshot how collected information will looks like in the email.
Once you execute script you will see below results on the screen which can tell you from what vm and disk it is collecting information. I am running this one Windows server 2012 R2, Powercli version 5.5, vsphere 5.5.
Below is the code information
Check earlier blog:
Collect disk space detail and send it in email Powercli
I have improvised it little bit and added below information.
- Information for all vmware vm disk usage,
- Any disk has below 20% will be in Red.
This is the screenshot how collected information will looks like in the email.
Once you execute script you will see below results on the screen which can tell you from what vm and disk it is collecting information. I am running this one Windows server 2012 R2, Powercli version 5.5, vsphere 5.5.
Below is the code information
##################################### ## http://kunaludapi.blogspot.com ## Version: 2 ## Tested this script on ## 1) Powershell v4 ## 2) Powercli v5.5 ## 3) Vsphere 5.x ## Find and input your information in below lines in the script ############################################################ ## $vCenterServer = "vCenterserver" ## $vcenteruser = "domain\user" ## $vcenterpasswd = "Password" ## ## From = "SpaceAlert@email.com" ## To = "Employee@email.com" ## SmtpServer = "smtp.exchange.com" ##################################### begin { Add-PSSnapin vmware.vimautomation.core #vCenter username password $vCenterServer = "vCenterserver" $vcenteruser = "domain\user" $vcenterpasswd = "Password" #connect vcneter server Connect-VIServer -Server $vCenterServer -User $vcenteruser -Password $vcenterpasswd $FinalResult = @() $Allvms = Get-View -ViewType “VirtualMachine” -filter @{”Guest.GuestState”=”running”} } #begin Process { foreach ($vm in $Allvms) { $Drives = $vm.Guest.Disk Write-host "Collecting Information from $($vm.name)" -ForegroundColor Green Foreach ($DriveC in $drives) { #Calculations $Freespace = [math]::Round($DriveC.FreeSpace / 1MB) $Capacity = [math]::Round($DriveC.Capacity / 1MB) $SpaceOverview = "$Freespace" + "/" + "$capacity" $PercentFree = [math]::Round(($FreeSpace)/ ($Capacity) * 100) $Disk = $DriveC.DiskPath.Substring(0,2) #Report for all vms if ($PercentFree -lt 20) { $vmnameRD = "<tr><td bgcolor='#ff704d'>{0}</td>" -f $vm.name $DiskRD = "<td bgcolor='#ff704d'>{0}</td>" -f $Disk $FreesspaceRD = "<td bgcolor='#ff704d'>{0}</td>" -f $Freespace $capacityRD= "<td bgcolor='#ff704d'>{0}</td>" -f $capacity #$SpaceOverviewRD = "<td bgcolor='#ff704d'>{0}</td>" -f $SpaceOverview $PercentFreeRD = "<td bgcolor='#ff704d'>{0}</td></tr>" -f $PercentFree $finalResult += $vmnameRD $finalResult += $DiskRD $finalResult += $FreesspaceRD $finalResult += $capacityRD #$finalResult += $SpaceOverviewRD $finalResult += $PercentFreeRD Write-Host "`t `tCollected from $($DriveC.DiskPath) on $($vm.name)" -ForegroundColor Yellow }#if else { $vmnameNL = "<tr><td>{0}</td>" -f $vm.name $DiskNL = "<td>{0}</td>" -f $Disk $FreesspaceNL = "<td>{0}</td>" -f $Freespace $capacityNL= "<td>{0}</td>" -f $capacity #$SpaceOverviewNL = "<td>{0}</td>" -f $SpaceOverview $PercentFreeNL = "<td>{0}</td></tr>" -f $PercentFree $finalResult += $vmnameNL $finalResult += $DiskNL $finalResult += $FreesspaceNL $finalResult += $capacityNL #$finalResult += $SpaceOverviewNL $finalResult += $PercentFreeNL Write-Host "`t `tCollected from $($DriveC.DiskPath) on $($vm.name)" -ForegroundColor Yellow }#else } #foreach drive } #foreach vm #region body $Body = @" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style>BODY{background-color:#ffffff;} TABLE{border-width: 1px;border-style: solid;border-color: #808080;border-collapse: collapse;} TH{border-width: 1px;padding: 0px;border-style: solid;border-color: #808080;background-color:#808080;color: white;} TD{border-width: 1px;padding: 0px;border-style: solid;border-color: #808080;}</style> </head><body> <H2>VMs DiskSpace usage report</H2> <table><colgroup><col/><col/><col/><col/><col/></colgroup> <tr><th>VMName</th> <th>Disk</th> <th>Free(MB)</th> <th>Total(MB)</th> <th>%Free</th></tr> $finalResult </table> </body></html> "@ #endregion body }#process end { #Send Email $messageParameters = @{ Subject = "Alert! VMs with less than 20% on diskspace marked Red" Body = $Body From = "SpaceAlert@email.com" To = "Employee@email.com" SmtpServer = "smtp.exchange.com" } Send-MailMessage @MessageParameters
-BodyAsHtml }
Check earlier blog:
Collect disk space detail and send it in email Powercli
2 comments:
I modified the script to only list machines with less than 10% free space.
How to you sort the result by machine name or free space %?
Thanks in advance!
There are some processes associated with windows update which usually enhances the disk usage, however, there can be some undesirable hidden process or spyware which can also increase the disk usage, hence Restoring a Windows System to its default is the most ideal solution to get rid of this.
Post a Comment