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

如何用PowerShell将TrustedSendersAndDomains导出为指定格式CSV?

修正后的PowerShell脚本及问题说明

最终可用脚本

# 手动指定用户列表,如需遍历所有邮箱可启用下一行注释
$Users = ("user1", "user2", "user3")
# $Users = Get-Mailbox | Select-Object -ExpandProperty Alias

$results = @()

foreach ($User in $Users) {
    # 仅调用一次获取用户垃圾邮件配置,避免重复查询
    $junkConfig = Get-MailboxJunkEmailConfiguration -Identity $User

    if ($junkConfig.TrustedSendersAndDomains.Count -gt 0) {
        # 遍历每个可信发件人/域名,生成独立记录
        foreach ($sender in $junkConfig.TrustedSendersAndDomains) {
            $resultObj = [PSCustomObject]@{
                User            = $User
                Trusted_Senders = $sender.ToString()
            }
            $results += $resultObj
        }
    }
    else {
        # 无可信发件人时,生成标记为"none"的记录
        $resultObj = [PSCustomObject]@{
            User            = $User
            Trusted_Senders = "none"
        }
        $results += $resultObj
    }
}

# 导出CSV,指定UTF8编码避免乱码
$results | Export-Csv -Path "C:\Users\Leo\export.csv" -NoTypeInformation -Encoding UTF8

原脚本存在的问题

  • 第一个脚本:
    1. 重复调用Get-MailboxJunkEmailConfiguration,浪费资源
    2. 在循环外创建$obj,每次添加成员会导致对象属性重复赋值,且赋值的是整个可信发件人数组而非单个条目
    3. 未处理无可信发件人的用户,这类用户不会出现在最终CSV中
  • 第二个脚本:
    仅用Write-Host输出内容到控制台,未将数据收集到$objfull数组,因此无法导出CSV

修正要点

  1. 用[PSCustomObject]替代New-Object创建对象,语法更简洁高效
  2. 每个可信发件人条目对应一个独立对象,确保CSV中每条记录为「用户名+单个可信发件人」的格式
  3. 新增无条目用户的处理逻辑,自动添加标记为"none"的记录
  4. 添加-Encoding UTF8参数,避免CSV导出后出现中文乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:27