Html PowerShell脚本输出到电子邮件

Html PowerShell脚本输出到电子邮件,html,powershell,exchange-server,Html,Powershell,Exchange Server,我正在尝试获取一个PowerShell命令,如果用户已启用OOF,该命令将显示用户的显示名称、主SMTP地址、开始时间和结束时间 我找到了一个显示用户名的命令。但我需要添加用户的显示名、主SMTP地址、开始时间和结束时间 我的问题是:当试图发送HTML格式的邮件时,我收到了以下错误消息 代码: $master = [collections.arraylist]@() $mailboxlist = Get-Mailbox -ResultSize Unlimited foreach ($mailbo

我正在尝试获取一个PowerShell命令,如果用户已启用OOF,该命令将显示用户的显示名称、主SMTP地址、开始时间和结束时间

我找到了一个显示用户名的命令。但我需要添加用户的显示名、主SMTP地址、开始时间和结束时间

我的问题是:当试图发送HTML格式的邮件时,我收到了以下错误消息

代码:

$master = [collections.arraylist]@()
$mailboxlist = Get-Mailbox -ResultSize Unlimited
foreach ($mailbox in $mailboxlist) {
    $reply = $mailbox | Get-MailboxAutoReplyConfiguration

    if ($reply.AutoReplyState -in "Scheduled","Enabled") {
        $output = [ordered]@{
            'DisplayName' = $null
            'Email' = $null
            'Start' = $null
            'End'  = $null
        }
        $output.DisplayName = $mailbox.DisplayName
        $output.Email = $mailbox.PrimarySMTPAddress
        switch ($reply.AutoReplyState) {
            "Scheduled" {
                $output.Start = $reply.StartTime
                $output.End = $reply.EndTime
            }
            "Enabled" {
                $output.Start = "Not Scheduled"
                $output.End = "Not Scheduled"
            }
        }
        $output = [PSCustomObject]$output
        $master.Add($output) | Out-Null
    }
}
$master | ConvertTo-Html | Out-String
Send-MailMessage -To $emailto -Subject $subject -SmtpServer $smtp -From $fromaddress -Body ($master) -BodyAsHtml -Credential $UserCredential
错误消息是:

Send-MailMessage : Cannot convert 'System.Collections.ArrayList' to the type 'System.String' required by parameter 'Body'. Specified method is not supported. At line:67 char:92 + ... maddress -Body ($master) -BodyAsHtml -Credential $UserCredential + ~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Send-MailMessage], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.SendMailMessage 发送邮件:无法将“System.Collections.ArrayList”转换为类型 参数“Body”需要“System.String”。不支持指定的方法。 第67行字符:92 + ... maddress-Body($master)-BodyAsHtml-凭证$UserCredential + ~~~~~~~~~ +CategoryInfo:InvalidArgument:(:)[Send MailMessage],参数BindingException +FullyQualifiedErrorId:CannotConvertArgument,Microsoft.PowerShell.Commands.SendMailMessage 声明

$master | ConvertTo-Html | Out-String
不就地转换
$master
的内容。它只是将其写入输出流。在
Send MailMessage
语句中使用变量之前,需要将结果赋回变量:

$master = $master | ConvertTo-Html | Out-String

在我看来,
$master
是一个数组——您试图将其用作字符串——尝试输出您的
$master
数组,并提取相关信息(或构建适当的字符串)是的……您甚至可以说:
-Body$($master-join[Environment]::NewLine)
或类似的……换句话说,将其转换为字符串。