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
}
}