результаты цикла foreach в тело письма - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу отправить результаты цикла PowerShell foreach в теле письма.

Вывод переменной дает мне таблицу, которую я хочу.Я получаю это сообщение об ошибке при попытке отправить электронное письмо.

Send-MailMessage: Невозможно преобразовать 'System.Object []' в тип 'System.String', требуемый параметром 'Body'.Указанный метод не поддерживается.

function Invoke-MSSQLCommand {
    [CmdletBinding()]
    Param(
        [System.String]$ConnectionString,
        [System.String]$SQLCommand
    )

    $V_cn = New-Object System.Data.SqlClient.SqlConnection("Data Source=$ConnectionString;Integrated Security=SSPI;Initial Catalog=master;Application Name=TEST_1;");
    $V_cn.Open()
    $command_v = $V_cn.CreateCommand()
    $command_v.CommandText = $SQLCommand;
    $result_v = $command_v.ExecuteReader()
    $table_v = New-Object "System.Data.DataTable" "MyResultSet"
    $table_v.Load($result_v)
    $V_cn.Close();
    $V_cn.Dispose();

    return ,$table_v
}; #function end

$myobject = Invoke-MSSQLCommand -ConnectionString "server.domain,1433" -SQLCommand "Select [TimeStamp], [Computer Name] from something.dbo.table";

$emailrecipients = "user1@domain.com"
$emailfrom = "Do_not_reply@domain.com"

$message = foreach ($one in $myobject) {
    #$temp += "TimeStamp = " + $one.TimeStamp + " Computer Name = " + $one.'Computer Name'
    "TimeStamp = " + $one.TimeStamp + " Computer Name = " + $one.'Computer Name' + "`r "
}

$message

Send-MailMessage -To $emailrecipients -Subject 'Awesome Subject Here' -Body $message -SmtpServer mail-server.net -Port 11 -From $emailfrom

1 Ответ

0 голосов
/ 14 февраля 2019

Вы хотите -Join содержимое вашего $message в одну строку.Попробуйте это:

Send-MailMessage -to $emailrecipients -subject 'Awesome Subject Here' -Body (-join $message) -SmtpServer mail-server.net -port 11 -FROM $emailfrom
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...