Powershell, чтобы посмотреть журнал и отправить уведомление по электронной почте - PullRequest
1 голос
/ 29 мая 2019

Новое в сценариях. Мне нужна помощь в создании скрипта powershell, который будет просматривать файл журнала и искать ключевое слово, например, не удалось / не удалось, и ключевое слово присутствует, отправьте электронное письмо с последними 50 строками.

У меня есть части скрипта, работающие, но у меня проблемы с их сборкой.

Просмотр журнала и распечатка строки

$PATH="C:\tmp\test.log"
Get-Content $PATH -Tail 50 | Where-Object { $_.Contains("fail") }

Электронная почта на SMTP-сервер отсортирована и работает

$From = "test@foobar.com"
$To = "test2@foobar.com"

$Subject = "Failed notification"
$Body = "This is what I want to say"
$SMTPServer = "smtp.foobar.com"
$SMTPPort = "25"
Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -port $SMTPPort

Я знаю, что мне нужно утверждение IF, чтобы сравнить содержимое и установить, если оно истинно, отправить письмо

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 29 мая 2019

Пока вы учитесь, возможно, вам будет проще быть ясным, если вам нужно напомнить себе, что что-то вернет.

[string] $PATH="C:\tmp\test.log"
[string[]] $failedRows = Get-Content $PATH -Tail 50 | Where-Object { $_.Contains("fail") }
# Email to SMTP server sorted and working

[string] $From = "test@foobar.com"
[string] $To = "test2@foobar.com"
[string] $Subject = "Failed notification"
[string] $Body = "This is what I want to say"
[string] $SMTPServer = "smtp.foobar.com"
[string] $SMTPPort = "25"
if( $failedRows -and $failedRows.Length -gt 0) {
    Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -port $SMTPPort
}

Помните, что powershell слабо напечатан . Редактор, такой как vscode с расширением powershell , поможет вам, а также вы увидите предложения о том, как улучшить ваш код.

$PATH="C:\tmp\test.log"
$failedRows = Get-Content $PATH -Tail 50 | Where-Object { $_.Contains("fail") }
# Email to SMTP server sorted and working

$From = "test@foobar.com"
$To = "test2@foobar.com"
$Subject = "Failed notification"
$Body = "This is what I want to say"
$SMTPServer = "smtp.foobar.com"
$SMTPPort = "25"
if( $failedRows -and $failedRows.Length -gt 0) {
    Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -port $SMTPPort
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...