Forum Discussion
dmarquesgn
Mar 22, 2022Iron Contributor
Email layout for powershell script
Hi, I'm creating my first powershell scripts, and a basic one I've created is just to check if in a time period (for example, last 7 days, any AD user was created with the "PasswordNeverExpires" ...
- Mar 22, 2022
dmarquesgn Made a HTML table from it, looks like this on my testserver:
(Used the code from https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/script-to-send-email-alerts-on-expiring-certificates-for/ba-p/1169438 as example)
Script:
$When = (Get-Date).Date.AddDays(-30) $Alerts = Get-ADUser -Filter { whenCreated -ge $When } -Properties whenCreated, PasswordNeverExpires | Select-Object samaccountname, Name, Enabled, PasswordNeverExpires $style = @' <style>body{font-family:`"Calibri`",`"sans-serif`"; font-size: 14px;} @font-face {font-family:`"Cambria Math`"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4;} table{border: 1px solid black; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;} th{border: 1px solid black; background: #dddddd; padding: 5px; } td{border: 1px solid black; padding: 5px; } .crtsn{font-weight: bold; color: blue; } .crtexp{font-weight: bold; color: red; } .crtcn{font-weight: bold; color: orange; } </style> '@ $mailbody += '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">' + $style + '</head><body>' $mailbody += '<p>' $mailbody += 'These users have been created in the last 30 days ' + "<br />" $mailbody += '</p>' $mailbody += '<p><table>' $mailbody += '<th>samaccountname</th><th>Name</th><th>Enabled</th><th>PasswordNeverExpires</th>' foreach ($user in $Alerts) { $mailbody += "<tr><td>" + $user.samaccountname + "</td><td>" + $user.Name + "</td><td>" + $user.Enabled + "</td><td>" + $user.PasswordNeverExpires + "</td></tr>" } $mailbody += '</table></p>' $mailbody += '</body>' $mailbody += '</html>' Send-MailMessage -SmtpServer mail.server.com -Port 587 -UseSsl -From mailfromaddress -To mailtoaddress -Subject 'Álert: Users < 30 dias & PasswordNEverExpires' -Body $mailbody -BodyAsHtml -Credential $mycredentials
Mar 22, 2022
dmarquesgn Made a HTML table from it, looks like this on my testserver:
(Used the code from https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/script-to-send-email-alerts-on-expiring-certificates-for/ba-p/1169438 as example)
Script:
$When = (Get-Date).Date.AddDays(-30)
$Alerts = Get-ADUser -Filter { whenCreated -ge $When } -Properties whenCreated, PasswordNeverExpires | Select-Object samaccountname, Name, Enabled, PasswordNeverExpires
$style = @'
<style>body{font-family:`"Calibri`",`"sans-serif`"; font-size: 14px;}
@font-face
{font-family:`"Cambria Math`";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
table{border: 1px solid black; border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;}
th{border: 1px solid black; background: #dddddd; padding: 5px; }
td{border: 1px solid black; padding: 5px; }
.crtsn{font-weight: bold; color: blue; }
.crtexp{font-weight: bold; color: red; }
.crtcn{font-weight: bold; color: orange; }
</style>
'@
$mailbody += '<html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8">' + $style + '</head><body>'
$mailbody += '<p>'
$mailbody += 'These users have been created in the last 30 days ' + "<br />"
$mailbody += '</p>'
$mailbody += '<p><table>'
$mailbody += '<th>samaccountname</th><th>Name</th><th>Enabled</th><th>PasswordNeverExpires</th>'
foreach ($user in $Alerts) {
$mailbody += "<tr><td>" + $user.samaccountname + "</td><td>" + $user.Name + "</td><td>" + $user.Enabled + "</td><td>" + $user.PasswordNeverExpires + "</td></tr>"
}
$mailbody += '</table></p>'
$mailbody += '</body>'
$mailbody += '</html>'
Send-MailMessage -SmtpServer mail.server.com -Port 587 -UseSsl -From mailfromaddress -To mailtoaddress -Subject 'Álert: Users < 30 dias & PasswordNEverExpires' -Body $mailbody -BodyAsHtml -Credential $mycredentials
dmarquesgn
Mar 25, 2022Iron Contributor
Hi,
Thanks, that's exactly what I've been looking for.
Now I can use the code in other alerts as well.
Thanks
Thanks, that's exactly what I've been looking for.
Now I can use the code in other alerts as well.
Thanks
- Mar 25, 2022No problem, it's not my really my thing (Visuals/Formatting/Design) but I liked this one because it's simple/clean. Usually I just mail simple text outputs 😄
- dmarquesgnMar 25, 2022Iron ContributorMe neither as well, but some users already complained that without the regular signature they are used to see, they were not sure if this was real 😄
- dmarquesgnMar 25, 2022Iron ContributorOne thing I've just remembered.
Can I insert a signature of our area that we're using in all emails that we send to the users?- Mar 25, 2022
If you can convert/extract the signature as HTML, you can insert it to the mailbody part just above the last </body> with a $mailbody += for every line