PowerShell将输出发送到电子邮件

时间:2019-02-24 17:44:18

标签: powershell

我有有效的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 :(得分:0)

首先,您尝试在“捕获”爪内发送电子邮件,因此,如果脚本运行没有问题,则Send-MailMessage的部分将永远不会运行。

我还建议您添加一条包含一些信息的写主机行,以使您知道正确的行,例如:

Write-Host "Reached Here"

那么您可以确定已经到达此行,并且可以从那里进行调试。 您还可以使用PowerShell ISE的调试选项逐行运行。

或者仅使用F8逐行运行脚本

答案 1 :(得分:0)

问题已解决-

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变量。

当然,可以对代码进行更多的增强。