Thank you for your replies guys i really appreciate your support, below us what i have from your suggestions. The report creates the tables and reports on the server resources fine but there are no data for the totals unfortunately. FYI - the reason i am doing the HTML format in this way is so that i can change the cell red when it value exceeds what we expect to see..
Luc - by the way when i remove the double assignment i get no value back..
$Result = @()
$totals = @()
$TotalCPU = $null
$TotalMem = $null
$TotalStr = $null
foreach ($vm in $vmName) {
$view = get-vm $vm
$vms = "" | select-Object Name, VMHost, PowerState, NumCpu, MemoryGB, ProvisionedSpaceGB
$Result += New-Object PSObject -Property @{
ServerName = $vms.Name = $view.Name
VMHost = $vms.VMHost = $view.VMHost
Powerstate = $vms.PowerState = $view.PowerState
CPU = $vms.NumCpu = $view.NumCpu
Mem = $vms.MemoryGB = $view.MemoryGB
UsedGB = $vms.ProvisionedSpaceGB = [math]::Round($view.ProvisionedSpaceGB, 0)
}
$TotalCPU += $view.NumCpu
$TotalMem += $view.MemoryGB
$TotalStr += $view.ProvisionedSpaceGB
}
#Round storage to 2 decimal places
#$TotalStr = [math]::Round($TotalStr,2)
# Build up a little object for Totals
$totals += New-Object PSObject -Property @{
TotalCPU = $TotalCPU
TotalMem = $TotalMem
TotalStorage = $TotalStr
}
#Start of html formatting
if($Result -ne $null)
{
$HTML = '<style type="text/css">
#Header{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;}
#Header td, #Header th {font-size:14px;border:1px solid #006400;padding:3px 7px 2px 7px;}
#Header th {font-size:14px;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#006400;color:#fff;}
#Header tr.alt td {color:#000;background-color:#EAF2D3;}
</Style>'
$HTML += "<HTML><BODY><Table border=1 cellpadding=0 cellspacing=0 id=Header>
<TR>
<TH><B>Server Name</B></TH>
<TH><B>VMHost</B></TD>
<TH><B>Power State</B></TD>
<TH><B>CPUs</B></TD>
<TH><B>Memory GB</B></TD>
<TH><B>Used Space</B></TH>
</TR>"
Foreach($Entry in $Result){
$HTML += "
<TD>$($Entry.ServerName)</TD>
<TD>$($Entry.VMHost)</TD>
<TD>$($Entry.PowerState)</TD>
<TD>$($Entry.CPU)</TD>
<TD>$($Entry.Mem)</TD>
<TD>$($Entry.UsedGB)</TD>
</TR>"
}
$HTML += "</Table></BODY></HTML>"
$HTML | Out-File $OutputReport
}
########################## Next table
if($Result -ne $null)
{
$HTML = '<style type="text/css">
#Header{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;}
#Header td, #Header th {font-size:14px;border:1px solid #006400;padding:3px 7px 2px 7px;}
#Header th {font-size:14px;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#006400;color:#fff;}
#Header tr.alt td {color:#000;background-color:#EAF2D3;}
</Style>'
$HTML += "<HTML><BODY><Table border=1 cellpadding=0 cellspacing=0 id=Header>
<TR>
<TH><B>Server Memory</B></TH>
<TH><B>Server CPU</B></TD>
<TH><B>Server Space</B></TH>
</TR>"
Foreach($Entry in $Result){
$HTML += "
<TD>$($Entry.TotalMem)</TD>
<TD>$($Entry.TotalCPU)</TD>
<TD>$($Entry.TotalStorage)</TD>
</TR>"
}
$HTML += "</Table></BODY></HTML>"
$HTML | Out-File $OutputTotal
}
#Start of email formatting
$body = [System.IO.File]::ReadAllText($OutputReport)
$body += [System.IO.File]::ReadAllText($OutputTotal)