Переменная PowerShell в электронную почту SMTP - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы запустить следующий цикл for, который работает. Загрузите его в переменную и отправьте результаты на SMTP-сервер. Любые идеи о том, как это сделать. Google никуда меня не доставит.

$Servers = get-content C:\Server\server.txt

$To = "test@test.com"
$From = "test@test.com"
$SMTPserver = "mail.mail.com" 
$Subject="Server Status" 

$message = foreach($server in $servers) 
{
Get-WmiObject win32_processor -computername $server | select SystemName, 
LoadPercentage
} 

$smtp=new-object Net.Mail.SmtpClient($smtpServer) 
$smtp.Send($From, $To, $Subject, $Message) 

1 Ответ

0 голосов
/ 26 апреля 2018

SmtpClient ожидает сообщение типа string, однако, если вы запустите свой запрос со следующим Write-Host, вы заметите, что $message не относится к строке типа:

$message = foreach($server in $servers) 
{
    Get-WmiObject win32_processor -computername $server | select SystemName, 
    LoadPercentage
} 

Write-Host ("Message is of type " + ($message.GetType()))

Вы можете просто отформатировать сообщение, используя, например, Out-String чтобы получить такую ​​строку:

Write-Host ("Message " + ($message | Out-String))

Вы можете определить его встроенным, если хотите, или сначала сохранить строковое сообщение в переменной:

$smtp.Send($From, $To, $Subject, ($Message | Out-String) )
...