Skip to main content

WORKLET NOTIFICATION :: Send an email alert when a worklet is evaluated

  • March 10, 2020
  • 1 reply
  • 209 views

jermicide

While putting together a few Automox Worklets, I found I wanted a quick way to tell whether a worklet had been processed by a remote agent (vs. combing through logs πŸ˜‡).


I cobbled together a hasty email snippet to drop into the Evaluation Code window (this prolly should be placed before any real evaluation code block to ensure exit codes don’t overstep this snippet).


πŸ™ˆπŸ™‰πŸ™Š


Example email:


image

Evaluation code:


<# Grab some system variables to pump into the email alert (as an example). #>



$Hostname = $env:COMPUTERNAME.ToUpper()

$HostDomain = $env:USERDOMAIN.ToUpper()

$HostWindowsVersion = (Get-WmiObject -class Win32_OperatingSystem).Caption.ToUpper()

$HostWindowsBuild = (Get-WmiObject -class Win32_OperatingSystem).Version.ToUpper()



<# Build a message body. #>

   

$smtpHTMLBody = 

@"

<!doctype html>

<html lang="en">

<head>

<meta charset="utf-8">

<style>

   table {

  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;

  font-size:1em;

  text-align:Left;

  border-collapse: collapse;

  width: 50%;

}

#p01  {

  color: #C95D42;

  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;

  font-size: 1em;

  font-weight: bold;

}

#p02  {

  color: #FFFFFF;

  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;

  font-size: 0.1em;

}

#p03  {

  color: #767676;

  font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;

  font-size: 0.5em;

}

td {

  border:1px solid #98bf21;

  padding-top:5px;

  padding-bottom:5px;

  padding-right:7px;

  padding-left:7px;

}

td#td01 {

  font-weight: bold;

  color:#ffffff;

  padding-top:5px;

  padding-bottom:5px;

  padding-right:7px;

  padding-left:7px;

  background-color:#A7C942;

}

</style>

</head>

<body>

<p id="p01">Alert Message:</p>

<table>

  <tr>

<td id="td01">Host:</td>

<td>$Hostname</td>

  </tr>

  <tr>

<td id="td01">Domain:</td>

<td>$HostDomain</td>

  </tr>

  <tr>

<td id="td01">Windows Version:</td>

<td>$HostWindowsVersion</td>

  </tr>

  <tr>

<td id="td01">Windows Build:</td>

<td>$HostWindowsBuild</td>

  </tr>

</table>

<p id="p02">hidden value used to filter message</p>

<p id="p03">Powered by Automox.  :)</p>

</body>

</html>

"@



<# Declare message components. #>



$smtpFrom = "Worklet Alerts <worklet_alerts@domain.com>"

$smtpTo = "Worklet Admin <worklet_admin@domain.com>"

$smtpSubject = "Automox Alert :: " + $env:COMPUTERNAME + " :: " + (Get-Date).ToString("MM/dd/yy HH:mm")

$SMTPServer = "smtp.domain.com"

$SMTPPort = "587"

$smtpUser = "messenger@domain.com"

$smtpPass = "Sup37looo000oong&kindaC0mpLeX"

$smtpSSPass = $smtpPass | ConvertTo-SecureString -AsPlainText -Force

$smtpCreds = New-Object System.Management.Automation.PSCredential -ArgumentList $smtpUser,$smtpSSPass



<# Build and send the message - written to support multiple versions of Powershell. #>



if ($PSVersionTable.PSVersion.Major -ge 3) {

		$email = @{

		From = $smtpFrom

		To = $smtpTo

		Subject = $smtpSubject

		BodyAsHtml = $True 

		Body = $smtpHTMLBody

		#attachment = $path

		smtpServer = $SMTPServer

		Port = $smtpPort

		UseSsl = $True

		Credential = $smtpCreds

		}

		send-MailMessage @email

	} else {

		$emailMessage = New-Object System.Net.Mail.MailMessage

		$emailMessage.From = $smtpFrom 

		$emailMessage.To.Add( $smtpTo )

		$emailMessage.Subject = $smtpSubject

		$emailMessage.IsBodyHtml = $true

		$emailMessage.Body = $smtpHTMLBody

		$SMTPClient = New-Object Net.Mail.SmtpClient($SMTPServer,$SMTPPort)

		$SMTPClient.EnableSsl = $true 

		$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($smtpUser, $smtpPass);

		$SMTPClient.Send($emailMessage)

	}

1 reply

AdamW-Automox
Forum|alt.badge.img
  • Automox Employee
  • 48 replies
  • March 10, 2020

@jermicide Wow, this is really impressive, and a great idea! I know a few people that would start using this immediately.


Thanks for sharing and contributing to the community!


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings