对不起,我刚刚开始编写一个PowerShell脚本。当事件(错误)遇到事件查看器时,我试图使用脚本发送电子邮件。我不想使用事件查看器中包含的特性,因为它并不适用于所有操作系统。下面是我的脚本中的内容,但我无法从剪切的错误中导入消息或数据。
$event = Get-EventLog -LogName Application -Source "My Script-1" | where {$_.eventID -eq 1}
if ($event.EntryType -eq "Error")
{
[string]$EmailBody = Event.Data
$EmailFrom = "Test@google.com"
$EmailTo = "lmill130@kent.edu"
$EmailSubject = "This was sent from a PowerShell Script"
$SMTPServer = "Example Server SMTP"
Write-host "Sending Email Test"
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject -Body $EmailBody -SmtpServer $SMTPServer
}
else
{
write-host "No error found"
write-host "Here is the log entry that was inspected:"
$event
}如果我将自己的字符串放入$EmailBody中,那么它没有问题,但是当我试图从事件中获取数据时,我就没有运气了。
这是我用来创建测试事件的脚本。
#New-EventLog -LogName Application -Source "My Script-1"
Write-EventLog -LogName Application -Source "My Script-1" -EntryType Error -
EventId 1 -Message "This is a test Entry." 我创建了一个任务,当该事件发生时,它将运行第一个脚本。
我在网上到处搜索,没有运气。请帮帮忙。
发布于 2017-12-19 19:01:00
这可能是因为Event.Data没有返回任何东西。
它必须是$event.Data,但我认为您应该使用$event.Message来获取错误的信息。
所以这一切看起来都是这样的:
$event = Get-EventLog -LogName Application -Source "My Script-1" | where {$_.eventID -eq 1}
if ($event.EntryType -eq "Error")
{
[string]$EmailBody = $event.Data
#or [string]$EmailBody = $event.Message
$EmailFrom = "Test@google.com"
$EmailTo = "lmill130@kent.edu"
$EmailSubject = "This was sent from a PowerShell Script"
$SMTPServer = "Example Server SMTP"
Write-host "Sending Email Test"
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject -Body $EmailBody -SmtpServer $SMTPServer
}
else
{
write-host "No error found"
write-host "Here is the log entry that was inspected:"
$event
}发布于 2017-12-19 19:02:38
替换[string]$EmailBody = Event.Data
用[string]$EmailBody = $Event.Data
使用消息总是比使用数据更好,因为您更担心错误消息,而不是将要被捕获的数据。
希望能帮上忙。
https://stackoverflow.com/questions/47893186
复制相似问题