Powershell Get-EventLog(简介)
Powershell Get-EventLog (Intro)
抱歉,我刚开始编写 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."
我创建了一个任务,当该事件结束时,它会运行第一个脚本。
我在网上找遍了,都没有找到。请帮忙
那可能是因为 Event.Data
没有 return 任何东西。
它必须是 $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
}
替换[string]$EmailBody = Event.Data
和[string]$EmailBody = $Event.Data
使用消息总是比使用数据更好,因为您更关心的是错误消息,而不是将要捕获的数据。
希望对您有所帮助。
抱歉,我刚开始编写 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."
我创建了一个任务,当该事件结束时,它会运行第一个脚本。
我在网上找遍了,都没有找到。请帮忙
那可能是因为 Event.Data
没有 return 任何东西。
它必须是 $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
}
替换[string]$EmailBody = Event.Data
和[string]$EmailBody = $Event.Data
使用消息总是比使用数据更好,因为您更关心的是错误消息,而不是将要捕获的数据。
希望对您有所帮助。