Forum Discussion

dmarquesgn's avatar
dmarquesgn
Iron Contributor
Mar 22, 2022

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" ...
  • Harm_Veenstra's avatar
    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

     

     

     

Resources