[英]PowerShell Sending output to Email
我有正在工作的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'
}
首先,您尝试在“ catch”爪内发送电子邮件,因此,如果脚本运行没有问题,则Send-MailMessage的部分将永远不会运行。
我还建议您添加带有一些信息的写主机行,以便知道您到达正确的行,例如:
Write-Host "Reached Here"
然后,您可以确定已到达此行,并且可以从那里进行调试。 您还可以使用PowerShell ISE的调试选项逐行运行。
或者只使用F8逐行运行脚本
问题解决了 -
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变量。
当然,可以对代码进行更多的增强。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.