Exchange Powershell - 批量向所有邮箱用户添加新的SMTP地址

时间:2014-12-12 17:23:36

标签: powershell exchange-server exchange-server-2007

Exchange Server 2007

我需要在所有邮箱中运行命令,以便为每个邮箱插入新的SMTP地址。如果格式相同,则可以轻松运行Get-MailContact添加新地址。例如域中的FirstName+"."+.LastName。但是,并非所有SMTP地址都遵循此约定。

我们有一些地址,例如:john.doe@domain.comjane.l.smith@domain.comjsmith@domain.com

我需要保留那些现有的smtp地址,但是添加一个带有新域的新smtp地址并保留前缀格式。因此,我需要将john.doe@newdomain.comjane.l.smith@newdomain.comjsmith@newdomain.com添加到这三个邮箱中。

我只是不确定如何扫描包含*@domain.com的任何地址的所有邮箱并添加*@newdomain.com

我可以在这做什么?

1 个答案:

答案 0 :(得分:2)

这样的东西应该工作,但我还没有对它进行测试,所以我肯定会在破坏你的交换服务器之前在测试环境中对它进行测试......

$NeedsNew = get-mailbox -ResultSize Unlimited | Where-Object { $_.EmailAddresses -like "*@domain.com"
foreach ( $Mailbox in $NeedsNew ) {
    $EmailAddresses = $Mailbox.EmailAddresses
    $Changed = $false
    foreach ( $Address in $EmailAddresses ) {
        if ( $Address -like "*@domain.com" ) {
            ( $prefix, $oldDomain ) = $Address.AddressString.split("@")
            $EmailAddresses += "{0}@newdomain.com" -f $prefix
            $Changed = $true
        }
    }
    if( $Changed ) {
        Set-Mailbox -Identity $Mailbox -EmailAddresses $EmailAddresses
    }
}