There is basically, things to address, should make, this.
- Get the alert parameters correctly passed to your script.
- Actually call the function defined in your script.
We ' ll start with the parameters. On the Alert Task tab of your Alert (pictured above), edit the Task Arguments field and replace: {name}{date}{counter}{threshold}{value}
With: "{name}" "{date}" "{counter}" "{threshold}" "{value}"
Your parameters is basically being parsed as a space-separated string value, so we add double-quotes around each Individu Al parameter token to handle values this include spaces, and we add a space between each individual parameter tokens so tha T we'll be able-to-tell-one parameter from the next. Then, for the action of your scheduled task (named "Processor Monitoring") we have a to-tell it to expect parameters from T He alert and to pass those parameters to the PowerShell script. Your Action is correct, i.e. "Start a program". For the Program/script field, enter ' Powershell.exe ' (or browse for the full path). And for the Add Arguments field, enter this: -File C:\path\to\your\PowerShell\scripts\perfmon_send_email.ps1 $(Arg0)
Where is the perfmon_send_email.ps1 script file containing your SendMail () function as described above. This bit is kind of finicky, so there may is other ways to set this up, but explicitly using the -File parameter made a D Ifference for my tests. The replaced with the parameter string from the Alert when the $(Arg0) scheduled task executes PowerShell To run your script. So, should make the Alert parameters available to your PowerShell script. Now, all of you are actually call the function you ' ve already defined. Add the following to the end of your script (after the function definition): # Get parameter values by position and pass them to the SendMail() function.SendMail $args[0] $args[1] $args[2] $args[3] $args[4]
$args is an array containing the parameter values passed to a script file called from the command line, which are exactly what we Configured the scheduled task to do.
Since We know the alert would always send the same values in the same order, i.e. name, date, counter, threshold, and value , we can just pull them from the command line arguments based on position and pass them to the SendMail () function. Note that there is more robust ways to process command line arguments, and this should is sufficient for your purposes. |