|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как вставить в тело сообщения вывод из данного скрипта - |
|
PowerShell - [решено] Как вставить в тело сообщения вывод из данного скрипта -
|
Новый участник Сообщения: 6 |
Есть скрипт, выводит в окошке части лога:
$Events = Get-EventLog security -message "*" -before ((get-date -hour 23 -minute 59 -second 59).AddDays(-1)) -after ((get-date -hour 0 -minute 0 -second 0).AddDays(-1)) | ?{$_.eventid -eq 4625} $Data = New-Object System.Management.Automation.PSObject $Data | Add-Member NoteProperty Time ($null) $Data | Add-Member NoteProperty UserName ($null) $Data | Add-Member NoteProperty Address ($null) $Events | %{ $Data.time = $_.TimeGenerated $message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()} $Data.UserName = ($message | ?{$_ -like "Имя учетной записи:*"} | %{$_ -replace "(.+):\s*"}) $Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."}) $data } и есть скрипт который отправляет почту: $CredUser = "test@test.ru" $CredPassword = "pass" $EmailFrom = "test@test.ru" $EmailTo = "test@test.ru" $Subject = "Test mail Subject" $Body = "test mail" $SMTPServer = "smtp.test.ru" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer) $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($CredUser, $CredPassword); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) |
|
Отправлено: 21:31, 17-06-2013 |
Ветеран Сообщения: 1758
|
Если я правильно понял и надо отправить по почте хэш $data, то можно добавить второй скрипт к первому и вместо $body использовать $data:
Или передавать почтовому скрипту в качестве параметра: B mail.ps1: Не проверял |
Отправлено: 21:55, 17-06-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать В обоих случаях в теле письма пусто, что еще можно посмотреть?
|
Отправлено: 10:36, 18-06-2013 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Первый скрипт 2.ps1 :
$Events = Get-EventLog security -message "*" -before ((get-date -hour 23 -minute 59 -second 59).AddDays(-2)) -after ((get-date -hour 0 -minute 0 -second 0).AddDays(-2)) | ?{$_.eventid -eq 4625} $Data = New-Object System.Management.Automation.PSObject $Data | Add-Member NoteProperty Time ($null) $Data | Add-Member NoteProperty UserName ($null) $Data | Add-Member NoteProperty Address ($null) $Data | Add-Member NoteProperty ComputerName ($null) $Events | %{ $Data.time = $_.TimeGenerated $message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()} $Data.UserName = ($message | ?{$_ -like "Имя учетной записи:*"} | %{$_ -replace "(.+):\s*"}) $Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."}) $Data.ComputerName = ($message | ?{$_ -like "Имя рабочей станции:*"} | %{$_ -replace "^.+:."}) } $body = [string] $Data $data $body .\Send-Email.ps1 -To "test@test.ru" -Subject "Logs" -Body $body PS C:\Script> .\2.ps1 Time UserName Address ComputerName ---- -------- ------- ------------ 16.06.2013 8:08:18 {-, administrator} 1.1.1.1 SERVER @{Time=06/16/2013 08:08:18; UserName=System.Object[]; Address=1.1.1.1; ComputerName=SERVER} param( [string] $to, [string] $subject, [string] $body ) $style = "<style>BODY{font-family: Arial; font-size: 10pt;}" $style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}" $style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }" $style = $style + "TD{border: 1px solid black; padding: 5px; }" $style = $style + "</style>" $CredUser = "test@test.ru" $CredPassword = "pass" $EmailFrom = "test@test.ru" $EmailTo = $to $SMTPServer = "smtp.test.ru" $message = New-Object System.Net.Mail.MailMessage $EmailFrom, $EmailTo $message.Subject = $subject $message.IsBodyHTML = $true $message.Body = $body | ConvertTo-Html -Head $style $smtp = New-Object Net.Mail.SmtpClient($smtpServer) $smtp.Credentials = New-Object System.Net.NetworkCredential($CredUser, $CredPassword); $smtp.Send($message) * 96 . <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">= <html xmlns=3D"http://www.w3.org/1999/xhtml"> <head> <style>BODY{font-family:= Arial; font-size: 10pt;}TABLE{border: 1px solid black; border-collapse:= collapse;}TH{border: 1px solid black; background: #dddddd; padding: 5px;= }TD{border: 1px solid black; padding: 5px; }</style> </head><body> <table>= <colgroup> <col/> </colgroup> <tr><th>*</th></tr> <tr><td>96</td></tr>= </table> </body></html> |
Отправлено: 14:49, 18-06-2013 | #4 |
Ветеран Сообщения: 508
|
Профиль | Отправить PM | Цитировать У меня получилось примерно так:
$Subject = "Microsoft Windows security auditing" $Theme = "Учетной записи не удалось выполнить вход в систему" $Server = "mailserver address or IP" $From = "AuditNotify@firma.ru" $To = "admin@firma.ru" $encoding = [System.Text.Encoding]::UTF8 $Body = Get-WinEvent -FilterHashtable @{LogName = "Security";ID = 4625;StartTime = (Get-Date).AddDays(-1)} | Select TimeCreated,` @{n = "Account";e = {([xml]$_.ToXml()).Event.EventData.Data | ?{$_.Name -eq "SubjectUserName"} | %{$_.'#text'}}}, ` @{n="Workstation name";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "WorkstationName"}| %{$_.'#text'}}},` @{n="IP Address";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "IPAddress"}| %{$_.'#text'}}} $body = $body -replace "@{" -replace "}" -replace "=", ": " -replace ";","`n" -replace "TimeCreated","Time Created" -replace "^","`n" $BodyM = $Body Send-MailMessage -From $From -To $To -SmtpServer $server -Body "$Theme `n$BodyM" -Subject $Subject -Encoding $encoding Проверьте, отпишитесь. P. S. Запускать скрипт от администратора, так как нужны права на просмотр журнала безопасности. |
|
Последний раз редактировалось snark, 12-07-2013 в 15:56. Отправлено: 14:44, 12-07-2013 | #5 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Да, Ваш скрипт тоже работает, в моем проблема в создании таблички в теле письма.
У меня была задача по каждому событию отправлять сообщение, но по факту ничего нормального не получилось, событие создается, запускается скрипт, делает выборку последнего события, а там этих событий уже несколько. Остановлюсь на Вашем скрипте, пусть шлет отчет раз в день. Хотелось бы все это оформить в табличку, но так и не разобрался. |
Отправлено: 17:45, 29-07-2013 | #6 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать В принципе можно привязать алерт на событие и он уже будет слать письмо. (мб все таки это лучше чем делать скрипт.)
Ну а так вообще не понимаю в чем трабла или |
Отправлено: 10:16, 30-07-2013 | #7 |
Ветеран Сообщения: 508
|
Профиль | Отправить PM | Цитировать Цитата Molchune:
это просмотр всех событий за последние 24 часа. Можно настроить хоть на 1 минуту: Так что, LLC, пробуйте менять значения на нужные вам. |
|
Отправлено: 10:26, 30-07-2013 | #8 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать + $SMTPClient.Send <<<< ($EmailFrom, $EmailTo, $Subject, $Body) + CategoryInfo : NotSpecified: (
![]() такая ошибка выводится при посылки сообщения ,вот скрипт который использовал я можете помочь $EmailFrom = “acc@yandex.ru” $EmailTo = “acc@gmail.com” $Subject = “The subject of your email” $Body = “What do you want your email to say” $SMTPServer = “smtp.yandex.ru” $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“user”, “pass”); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) |
Отправлено: 08:36, 06-04-2015 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Вывод сообщения после разблокировки компьютера. | groovik | Microsoft Windows NT/2000/2003 | 4 | 20-12-2012 17:28 | |
CMD/BAT - Вывод сообщения о успешном подключении | XXXp | Скриптовые языки администрирования Windows | 3 | 18-12-2011 22:13 | |
V. 2010 - тело сообщения пустое | Pechept | Microsoft Exchange Server | 1 | 22-04-2011 19:44 | |
VBS/WSH/JS - [решено] передать параметры запуска в тело скрипта | xvoct | Скриптовые языки администрирования Windows | 1 | 24-06-2010 16:48 | |
Как сделать чтобы из данного компьютера невозможно было зайти в odnoklassniki.ru и vk | Sergyx | Хочу все знать | 3 | 16-12-2009 16:08 |
|