Вывести запрос PowerShell на электронную почту - PullRequest
0 голосов
/ 23 января 2019

Кто-то любезно создал следующий сценарий PowerShell для меня, чтобы проверить, было ли несколько компьютеров в сети или в автономном режиме, и вывести их в сетку. Теперь я хотел бы автоматизировать это как запланированное задание на компьютере, который выводит конкретному пользователю по электронной почте.

Как разработать приведенный ниже скрипт для вывода на электронную почту?

$dt = new-object System.Data.DataTable
$cols=@("Location", "Hostname", "Status")
foreach ($col in $cols) {
    $dt.Columns.Add($col) | Out-Null
    }

$dt.rows.add("1", "3050-27222", "Offline")
$dt.rows.add("2", "3050-27614", "Offline")
$dt.rows.add("3", "3050-27623", "Offline")
$dt.rows.add("4", "3050-27636", "Offline")
$dt.rows.add("5", "3050-27625", "Offline")
$dt.rows.add("6", "3050-27615", "Offline")
$dt.rows.add("7", "3050-27616", "Offline")
$dt.rows.add("8", "3050-27631", "Offline")
$dt.rows.add("9", "3050-27637", "Offline")
$dt.rows.add("10", "3050-27601", "Offline")
$dt.rows.add("11", "3050-27606", "Offline")
$dt.rows.add("12", "3050-27635", "Offline")
$dt.rows.add("13", "3050-27638", "Offline")
$dt.rows.add("14", "3050-27628", "Offline")
$dt.rows.add("15", "3050-27622", "Offline")
$dt.rows.add("16", "3050-27604", "Offline")
$dt.rows.add("17", "3050-27613", "Offline")
$dt.rows.add("18", "3050-27624", "Offline")
$dt.rows.add("19", "3040-25508", "Offline")
$dt.rows.add("20", "3050-27621", "Offline")
$dt.rows.add("21", "3050-27634", "Offline")
$dt.rows.add("22", "3050-27619", "Offline")
$dt.rows.add("23", "3050-27640", "Offline")
$dt.rows.add("24", "3050-27630", "Offline")
$dt.rows.add("25", "3050-27632", "Offline")
$dt.rows.add("26", "TBC", "Offline")
$dt.rows.add("27", "3050-28448", "Offline")
$dt.rows.add("28", "3050-27599", "Offline")
$dt.rows.add("29", "3050-27617", "Offline")
$dt.rows.add("30", "3050-27605", "Offline")
$dt.rows.add("31", "3050-27603", "Offline")
$dt.rows.add("32", "3050-27602", "Offline")
$dt.rows.add("33", "3050-27620", "Offline")
$dt.rows.add("34", "3050-27610", "Offline")
$dt.rows.add("35", "3050-27626", "Offline")
$dt.rows.add("36", "3050-27608", "Offline")
$dt.rows.add("37", "3050-27618", "Offline")
$dt.rows.add("38", "3050-27641", "Offline")
$dt.rows.add("39", "3050-27609", "Offline")
$dt.rows.add("40", "3050-27611", "Offline")
$dt.rows.add("41", "3050-27607", "Offline")
$dt.rows.add("42", "3050-28452", "Offline")
$dt.rows.add("43", "3050-28457", "Offline")
$dt.rows.add("44", "3050-27600", "Offline")
$dt.rows.add("45", "3050-28709", "Offline")
$dt.rows.add("46", "3050-27629", "Offline")
$dt.rows.add("47", "3050-27639", "Offline")
$dt.rows.add("48", "3050-28447", "Offline")
$dt.rows.add("49", "3050-27627", "Offline")

foreach ($row in $dt)
{
    if (Test-Connection $row.Hostname)
    {
        $row.Status = "Online"
    }
    else
    {
        $row.Status = "Offline"
    }
}

$dt | sort-object "Status"| Out-GridView 

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Использование Send-MailMessage ...

Вывод в файл или CSV и отправка в виде вложения в электронное письмо:

$dt | sort-object "Status" | Out-File -FilePath C:\folder\attachment.txt #file
$dt | sort-object "Status" | Export-CSV C:\folder\file.csv -NoTypeInformation #csv

Send-MailMessage -From 'user01@example.com' -To 'user02@example.com' -Subject 'Sending the Attachment' -Body 'Connection Status' -Attachments 'C:\folder\file.txt' -SmtpServer smtp.example.com

Вывод в HTML и включениев теле письма:

$html_table = $dt | sort-object "Status" | ConvertTo-Html -Fragment

Send-MailMessage -From 'user01@example.com' -To 'user02@example.com' -Subject 'Sending the Attachment' -BodyAsHtml $html_table -SmtpServer smtp.example.com
0 голосов
/ 23 января 2019

Вы должны иметь возможность взять переменную $ dt в нижней части вашего скрипта и экспортировать ее в CSV локально где-нибудь на компьютере.

$dt | Export-CSV C:\report.csv -NTI

Затем вы можете использовать команду Send-MailMessage дляотправить этот CSV по электронной почте.Это потребует выяснения вашего SMTP-сервера и возможности пересылать почту через него.

Send-MailMessage -Attachments C:\report.csv -From from@domain.com -To to@domain.com -SmtpServer your.smtp.server.address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...