You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell遍历Exchange邮箱统计结果无法在邮件中显示问题求解

问题原因

  • 变量拼写错误:循环内追加统计结果时使用的变量名是$messsage(多了1个s),结果没有写入最终用来发信的$message变量。
  • 格式化对象无法直接拼接:ft(Format-Table)返回的是控制台专用的格式化对象,不是可直接拼接的文本内容,即使拼写正确也无法正常显示在邮件中。
  • 未做HTML适配:你启用了-BodyAsHtml参数,纯文本表格需要特殊处理才能保留格式,否则会出现换行丢失、排版混乱的问题。

解决方案

修正后的完整代码如下,调整了变量拼写,将统计结果转为带格式的纯文本后用<pre>标签包裹保证排版正常,同时添加了变量初始化避免异常:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeServer/PowerShell -Authentication Kerberos 
Import-PSSession $Session -AllowClobber

$Users = 'user1','User2','user3','user4'
# 初始化邮件正文变量
$message = ""

foreach($user in $users) {
    $message += "------------- <br>"
    $message +="checking user.... $user <br>"
    $message += "------------- <br>"

    # 查询统计结果,转为纯文本表格后用pre标签包裹适配HTML显示
    $report = Get-MailboxFolderStatistics $user | Where-Object {$_.name -in 'Top of Information Store','Recoverable Items','Deletions','Purges','Versions'}  | Select-Object Name, ItemsInFolder, FolderAndSubFolderSize | Format-Table -AutoSize | Out-String
    $message += "<pre>$report</pre><br>"
}

Send-MailMessage -SmtpServer smtpserver.domain.com -From Sender@domain.com -To MyEmailAddress@domain.com -Subject "Litigation Mailbox Size Report" -Body $message -BodyAsHtml

Get-PSSession | Remove-PSSession

额外优化:将多个-or判断替换为-in操作符,代码更简洁易读。

内容的提问来源于stack exchange,提问作者TDx2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:36:03