Exchange Powershell - массовое добавление нового SMTP-адреса всем пользователям почтовых ящиков.

Exchange Server 2007

Мне нужно выполнить команду для всех почтовых ящиков, чтобы вставить новый SMTP-адрес в каждый почтовый ящик. Достаточно легко запустить Get-MailContact добавить новые адреса, если они имеют одинаковый формат. Такие как FirstName+"."+.LastName в домене. Однако не все SMTP-адреса следуют этому соглашению.

У нас есть несколько адресов, например: john.doe@domain.com, jane.l.smith@domain.com а также jsmith@domain.com,

Мне нужно сохранить эти существующие адреса SMTP, но добавить новый адрес SMTP с новым доменом и сохранить формат префикса. Итак, мне нужно добавить john.doe@newdomain.com, jane.l.smith@newdomain.com, а также jsmith@newdomain.com на эти три почтовых ящика.

Я просто не уверен, как сканировать все почтовые ящики для любого адреса, который содержит *@domain.com и добавить *@newdomain.com

Что я могу сделать здесь?

1 ответ

Нечто подобное должно работать, но я не проверял его, поэтому я бы определенно проверил его в тестовой среде, прежде чем уничтожать ваш сервер обмена...

$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
    }
} 
Другие вопросы по тегам