Exchange 2007 导出所有外部电子邮件地址的 CSV

Exchange 2007 导出所有外部电子邮件地址的 CSV

一位客户问了我们一个有点奇怪的问题,要求我们导出他们公司曾经发送过邮件的所有电子邮件地址。

不是他们自己的邮箱地址,而是他们客户、供应商等的所有外部地址。我猜跟踪日志不够用,它不会回溯那么远。

我需要一个 Powershell 命令来“扫描/搜索”所有邮箱和所有电子邮件项目。对于每个电子邮件项目,必须将发件人和收件人地址导出到文件中。我知道如果用户删除了电子邮件,这些地址将不会显示在导出中,因为数据不再存在于电子邮件数据库中。

如果有重复项,则没有问题,我可以稍后使用某些工具过滤掉重复项。客户使用 Exchange 2007。

答案1

如果系统中的收件人少于 9999 人,此方法应该有效。如果收件人更多,只需增加 ResultSize 即可。

$recip = Get-Recipient -ResultSize 9999 | Select-Object 
alias,DisplayName,EmailAddresses
$output = @()

# Work thorugh each recipient
$recip | ForEach-Object {
    # Work through each Email alias
    $_.EmailAddresses | ForEach-Object {
        # Clean SMTP from the from of the addresses
        $cleaned = $_.TrimStart("smtp:").TrimStart("SMTP:")

        # Check and exclude x500 system addresses
        if ($cleaned -inotmatch "x500:*") {
            $output += $cleaned
        }
    }
}

$output | Out-File addresses.csv -Force

相关内容