# .SYNOPSIS Creates HTML report of snapshots , Poweroff and PoweredOn VMS .DESCRIPTION The purpose of the script is to get a list of all VM Snaphots, Powered On VMs and Powered Off VMs. Utilises css and converts to a good looking html report. HTML format highlights large/old snapshots. This can be scheduled via taks scheduler and emailed to administrators or uplaoded to an IIS web location. .NOTES Script name: VMsStatusReport.ps1 Created on: 20/06/2021 Author: Jimit Gohel, @PsJimKG Dependencies: Along with PowerCli, this script also requires Don Jones EnhancedHTML2 module. https://www.powershellgallery.com/packages/EnhancedHTML2/2.1.0.1 ===Tested Against Environment==== vSphere Version: 6.7 PowerCLI Version: PowerCLI 11.5.0 PowerShell Version: 5.1 OS Version: Windows 10 .INPUTS VIServerFilePath .OUTPUTS html file named VMStatusReport.html .PARAMETER VIServerFilePath csv file path to list of viservers .PARAMETER Outpath Output path to html report. .EXAMPLE PS> Get-VMSnapshotReport -VIServerFilePath "C:\Temp\viservers.csv" -OutPath "C:\MyReports" .EXAMPLE PS> Get-VMSnapshotReport "C:\temp\viserverslist.csv" C:\VMReports" #> function Get-VMSnapshotReport { [CmdletBinding()] Param( [Parameter(Mandatory = $True, Position = 1, ValueFromPipeline = $True)] [ValidateNotNullOrEmpty()] [string]$VIServerFilePath, [Parameter(Mandatory = $True, Position = 2)] [string]$OutPath ) # path to CSV list of viservers $viservers = (Get-Content "$VIServerFilePath") Connect-VIServer $viservers $CSS2 = "body { color: #333333; font-family: Tahoma; font-size: 10pt; } h1 { text-align: center; } h2 { border-top: 1px solid #666666; } th { font-weight: bold; color: #eeeeee; background-color: #333333; cursor: pointer; } .odd { background-color: #ffffff; } .even { background-color: #bfbfbf; } .paginate_enabled_next, .paginate_enabled_previous { cursor: pointer; border: 1px solid #222222; background-color: #dddddd; padding: 2px; margin: 4px; border-radius: 2px; } .paginate_disabled_previous, .paginate_disabled_next { color: #666666; cursor: pointer; background-color: #dddddd; padding: 2px; margin: 4px; border-radius: 2px; } .dataTables_info { margin-bottom: 4px; } .sectionheader { cursor: pointer; } .sectionheader:hover { color: red; } .grid { width: 100%; } .smallgrid { width: 50%; } .red { color: #ff3333; font-weight: bold; } .green { background-color: #00cc44; font-weight: bold; } " #Capturing VMs data $vms = Get-VM #reportgeneratedtag $reportgeneratedtag = (Get-Date -Format "dd MMMM yyyy HH:mm:ss") #Capturing data for snapshots $paramsSnapshotFragment = @{'As' = 'Table'; 'PreContent' = '