1

I am new to Powershell, I am a junior admin for a VMware environment. I am trying to automate a weekly report for snapshots in PowerCli. I am making the script in Powershell.

I have made a simple css, and I had the e-mail send successfully out with the html table as an attachment. I used convertto-html with the cssuri option, then send-mailmessage after that.

But, even better, would be to have it show up directly in our gmail inbox, without having to download any attachment. That's where I'm stuck. I got it to email, but it shows it as plain text - no nice formatting happens.

With the latest script, it looks like this.

make the "creds" file first and drop it into a directory. Write-Host "`n Starting script, connecting to server" -ForegroundColor Green $creds = Get-VICredentialStoreItem -file "D:\Documents and Settings\creds" connect-viserver -server $creds.Host -User $creds.User -Password $creds.Password Start-Sleep -s 30 Write-Host "`n Connection to server complete" -ForegroundColor Green Write-Host "`n Pulling data from Win03vc02" -ForegroundColor Green $date = Get-Date $dateforname = Get-Date -UFormat '%m-%d-%Y-%H%M%S' $filename = "VMsnapshots_" + $dateforname + ".html" $Report=@" <style type='text/css'> table { Margin: 2px 2px 2px 2px; Border-collapse: collapse; Font-Family: Calibri; Font-Size: 12pt; Background-Color: rgb(252, 252, 252); } table, td { border-style: solid; border-color: #E0E0E0; border-width: 1px; } tr:hover td { Background-Color: #6699CC; Color: rgb(255, 255, 255); } tr:nth-child(even) { Background-Color: #eef; } th { Text-Align: Left; Color: #6699CC; Padding: 5px 5px 5px 5px; Background-Color: #484848; Font-Size: 14pt; } td { Vertical-Align: Top; Padding: 5px 5px 5px 5px; } </style> "@ $Report += Get-VM | Get-Snapshot | Select-Object VM,VMId,Description,PowerState,SizeGB | ConvertTo-Html -Fragment Write-Host "`n Data pulled, sending mail in 60 seconds..." -ForegroundColor green Start-Sleep -s 60 $from = "o" $to = "i","j" $subject = "VMWare snapshots report for week of $date" $smtp = "h" Send-MailMessage -from $from -to $to -subject $subject -Body $Report -BodyAsHtml -smtpServer $smtp Write-Host "`n e-mail will arrive shortly, process complete!" 

the one that successfully adds it as an attachment with correct formatting looks like this. but i don't prefer this way.

# make the "creds" file first and drop it into a directory. Write-Host "`n Starting script, connecting to server" -ForegroundColor Green $creds = Get-VICredentialStoreItem -file "D:\creds" connect-viserver -server $creds.Host -User $creds.User -Password $creds.Password Start-Sleep -s 30 Write-Host "`n Connection to server complete" -ForegroundColor Green Write-Host "`n Pulling data from Win03vc02" -ForegroundColor Green $date = Get-Date $dateforname = Get-Date -UFormat '%m-%d-%Y-%H%M%S' $filename = "VMsnapshots_" + $dateforname + ".html" $Attachment = "D:\$filename" $css = "D:\htmlstyle2.css" $Report = Get-VM | Get-Snapshot | Select-Object VM,VMId,Description,PowerState,SizeGB | ConvertTo-Html -CssUri $css | Out-File -Encoding ascii "$Attachment" Write-Host "`n Data pulled, sending mail in 60 seconds..." -ForegroundColor green Start-Sleep -s 30 $from = "t" $to = "a" $subject = "VMWare snapshots report for week of $date" $smtp = "a" Send-MailMessage -from $from -to $to -subject $subject -body "Hello, attached is the snapshot report for this week on $date. `nPlease download it first, then open it. ` Timestamp follows the format month-day-year_hours-minutes-seconds" -Attachments "$Attachment" -smtpServer $smtp Write-Host "`n e-mail will arrive shortly, process complete!" 
1
  • I figured out how to do this sort of - at least getting the style to show up as an attachment, successfully. IF you need help just ping me. Commented Mar 23, 2015 at 19:58

1 Answer 1

2

Gmail strips out the style tags. You will need to put your style inline. It will probably be easiest to perform string manipulation on $Report. For example:

$newhtml = $Report -replace ('<td','<td style="color:red;"') 
2
  • hmm ahh okay, I will try my best and let you know if I'm successful.. Commented Mar 9, 2015 at 16:27
  • I'm still stuck! Also, I noticed that the script that I thought works (the 2nd one), actually doesn't work on someone else's computer - they don't get the nice styling. Is it because it is not inline? I have tried to find many online tutorials for inline CSS, but still stuck... Commented Mar 12, 2015 at 14:43

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.