【发布时间】:2013-08-27 21:08:25
【问题描述】:
我在性能监视器 (Windows Server 2008 R2) 中创建了一个警报,当 \Processor(_Total)\% Processor Time 高于 10 时应触发该警报(一个小值只是为了保证发送警报的条件始终为遇见)。您可以在图像中看到警报任务属性。
此外,我还在任务计划程序中创建了一个新任务,无论用户是否登录,它都会运行,它会以最高权限运行。此任务的触发器具有以下属性:
- 开始任务:在一个事件中
- 设置:基本
- 日志:系统
- 来源:处理器
Actions(这是我不知道是否正确的部分)具有以下设置:
- 操作:启动程序
- 程序/脚本:用于发送电子邮件的 PowerShell 脚本的路径。
PowerShell 代码如下($name、$date、$counter、$threshold、$value 应该来自性能监视器数据收集器集警报任务属性,如上图所示):
function SendMail ($name, $date, $counter, $threshold, $value) {
$MailMessage = New-Object Net.Mail.MailMessage
$MailMessage.To.Add("myemail@blah.bleh")
$MailMessage.From = "do-not-reply@blah.bleh"
$MailMessage.Subject = "ALERT - Performance Monitor"
$MailMessage.IsBodyHtml = $True
$MailMessage.Body = @"
<html><head></head><body>
The following counter needs attention:<BR><BR>
Name: $($name)<BR>
Date: $($date)<BR>
Counter: $($counter)<BR>
Threshold: $($threshold)<BR>
Actual Value: $($value)<BR>
<FONT face=Courier>$($html)</FONT>
<BR>
--- Automatically generated with SENDMAIL function ---
</body>
</html>
"@
$SmtpClient = New-Object Net.Mail.SmtpClient("blah.bleh")
$SmtpClient.Send($MailMessage)
}
一旦任务开始,我在历史记录中有以下内容:任务开始、动作开始和创建询问过程。但是,电子邮件永远不会发送。
我尝试使用操作发送电子邮件:发送电子邮件,它工作正常。有谁知道可能出了什么问题?
【问题讨论】:
-
您确定脚本中的所有参数都正确传递了吗?另一件事是,如果您使用的是 powershell v3,那么您可以使用 send-mailmessage cmdlet -stackoverflow.com/a/17456077/581922
-
@Mitul:你的意思是$name、$date等参数吗?如果是这样,我该如何检查?如果您指的是电子邮件、smtp 服务器等参数,我使用的参数与我在操作中使用的相同:发送电子邮件(不同之处在于,在脚本中,我的 smtp 服务器以“SMTP”开头。 (不幸的是,我没有使用 v3 :(
-
您发布的代码定义了一个函数,但我没有看到您在任何地方调用该函数。
-
测试它注释掉所有内容并将值输出到文本文件。
-
@Mitul PSv2 有 Send-MailMessage。
标签: email powershell alert windows-server-2008-r2 performance-monitor