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

EXO环境下使用PowerShell获取O365租户收件人邮箱别名的方案咨询

EXO获取O365租户所有收件人SMTP别名的实现方案

问题根因

本地Exchange的Get-Recipient返回的EmailAddresses是ProxyAddressCollection类型的结构化对象,自带拆分好的SmtpAddress属性,所以可以直接通过嵌套Select-Object提取。而EXO的Get-EXORecipient为了优化接口传输效率,直接返回字符串数组格式的邮件地址列表,展开后就是纯字符串,没有附属属性,所以原来的写法只会读取到字符串的Length属性。

最优实现方案

方案1:结构化输出(推荐)

输出标准PowerShell对象,后续可直接用于筛选、排序、导出CSV等操作,适配性最高:

Get-EXORecipient | ForEach-Object {
    $recipientName = $_.Name
    $samAccount = $_.SamAccountName
    # 遍历每个别名单独输出一行
    $_.EmailAddresses | ForEach-Object {
        [PSCustomObject]@{
            收件人名称 = $recipientName
            账户名 = $samAccount
            SMTP别名 = $_
        }
    }
}

如果需要直接导出为CSV文件,只需要在末尾追加导出命令即可:
| Export-Csv -Path "C:\O365收件人别名列表.csv" -NoTypeInformation -Encoding UTF8

方案2:精简写法

如果不需要结构化输出,只需要快速打印结果,比你当前的写法更简洁,无需显式调用Write-Output:
Get-EXORecipient | % { $currentName = $_.Name; $_.EmailAddresses | % { "$currentName,$_" } }


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:45:03