PowerShell Отправка вывода на электронную почту - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть рабочий сценарий PS для получения информации о дате и размере обработки моих кубов и т. Д., Поэтому сейчас я пытаюсь отправить письмо, передавая выходные данные в переменную ... так что, к счастью, никто не может помочь мне здесь .... признателен за помощь.

enter code here

try{
$asServer="server";
$loadInfo = 
[Reflection.Assembly]::LoadWithPartialName(“Microsoft.AnalysisServices”)
$server = New-Object Microsoft.AnalysisServices.Server
$server.connect($asServer)
if ($server.name -eq $null) {
Write-Output (“Server ‘{0}’ not found” -f $asServer)
break
}
$sum=0
foreach ($d in $server.Databases)
{ 
Write-output( “Database: {0}; Status: {1}; Size: {2}MB;Last Schema Update: 
{3};Last Cube Processed:{4} ” -f $d.Name, $d.State, 
($d.EstimatedSize/1024/1024).ToString(“#,##0”),$d.LastSchemaUpdate, 
$d.LastProcessed ) 
#$output = Write-output( “Database: {0}; Status: {1}; Size: {2}MB;Last 
Schema Update:{3};Last Cube Processed:{4} ” -f $database.Name, 
$server.State, 
($server.EstimatedSize/1024/1024).ToString(“#,##0”),
$server.LastSchemaUpdate, $server.LastProcessed )
#$sum=$sum+$d.EstimatedSize/1024/1024
$cube ="find the cube processing 
information.-$($server.Name),-$($server.LastProcessed)"
} 
-ErrorAction Stop
 }
catch{
$ErrorMessage = $_.Exception.Message
#Write-Host "Query executed"
Send-MailMessage -From 'alert@mail.com' -To 'user1@mail.com' -Subject 
'Cube Refresh Status' -body $output -SmtpServer 'smtp.mailserver.com'
}

Ответы [ 2 ]

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

Проблема решена -

new code changes here --

$output=Write-output( “Database: {0};Size: {2}MB;Last Schema Update:{3};Last Cube 
Processed:{4} ” -f $d.Name, $d.State,($d.EstimatedSize/1024/1024).ToString(“#,##0”), 
$d.LastSchemaUpdate, $d.LastProcessed ) |Out-File **c:\temp\output.txt -Append**

, добавлена ​​переменная для выходного файла

$out_file="C:\temp\output.txt"

$body = Get-Content $out_file | Out-String 

и изменен параметр -body, как показано ниже.-body $ body и должен был использовать переменную $ body.

Конечно, можно сделать еще несколько улучшений в коде.

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

Прежде всего вы пытаетесь отправить электронное письмо внутри когтей «catch», поэтому, если ваш сценарий запускается без проблем, часть с Send-MailMessage никогда не запустится.

Я бы также предложил вамдобавьте строку write-host с некоторой информацией, чтобы знать, что вы достигли правильной строки, например:

Write-Host "Reached Here"

Тогда вы точно знаете, что эта строка была достигнута, и вы можете отлаживать ее оттуда.Вы также можете использовать опцию отладки PowerShell ISE, чтобы запускать построчно.

Или просто построчно запускать свой скрипт, используя F8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...