Назад | Перейти на главную страницу

Получить базу данных Exchange пользователя в PowerShell

Я рыскал по сети в течение нескольких дней, чтобы найти это. Я создаю сценарий PowerShell для нового пользователя с поддержкой электронной почты (Exchange 2007).

Чтобы дать вам небольшую справку, когда у нас появляется новый сотрудник, их учетная запись AD создается в нашей внешней службе поддержки, но они не создают свою учетную запись электронной почты.

Я пытаюсь автоматизировать процесс включения почты для пользователя, который включает в себя помещение их в ту же базу данных, что и существующего пользователя, отключение imap pop activesync и, наконец, отправку запроса по электронной почте.

Я хотел бы просто получить запрос на ввод имени нового пользователя, пользователя для репликации (почтовый ящик, группа хранения, база данных) и человека, которому будет отправлено электронное письмо после его создания.

Так что, если бы кто-то мог просто помочь с командой для получения пользовательской базы данных Exchange в PowerShell, это было бы здорово, но если люди также хотят помочь с моим взломанным скриптом, сделайте это тоже !!!

Вот что у меня есть на данный момент:

Write-output “ENTER THE FOLLOWING DETAILS”
$DName = Read-Host “User Diplay Name"
$RUser = Read-Host "Replicate User(Database Grab)"
$RData = #get the Replicate user's mailbox database here
$REmail = #either just use a Read-Host “Requester's Email address" or ask for Requester's name and pipe through their email address by digging for it w/ powershell
Enable-Mailbox -Identity "$DName" -Database "$RData" 
Send-MailMessage -From "John Doe <John.Doe@Generic.com>" -To (put $REmail here which is the Requester's email) -Subject "Test Person's email account" -Body "Test Person's email account has been setup.`n`n`nJohn Doe`nGeneric Company`nSystems Administrator`nOffice: 123.456.7890`nJohn.Doe@Generic.com" -SmtpServer genericexchange.exchange.com

Карл Митшке на официальном форуме сценаристов! смог решить мою дилемму!

$ RData = ((Get-Mailbox -Identity $ RUser) .Database) .DistinguishedName

Вот ссылка: http://social.technet.microsoft.com/Forums/en/ITCG/thread/499deabf-a12d-470a-8773-b11ffa9c8694

Еще раз спасибо, Карл !!!

Это должно привести вас на верный путь, с одной лишь оговоркой, что вам понадобится работающий компонент PowerShell AD; для этого требуется хотя бы один DC 2008R2.

GetADUser -Identity "$RUser" -Properties homeMDB

С другой стороны, будьте осторожны с вашими направленными кавычками с автоматическим форматированием слов - я не знаю, хорошо ли работает Powershell с ними, но они, безусловно, повлияли на раскраску кода StackExchange.

Я не завидую тому, что вы пытаетесь сделать это в PowerShell - будьте осторожны, проверяйте вводимые данные, которые могут быть введены пользователем, и регистрируйте результаты команд.

Изменить: вы знаете, что это свойство из AD, вероятно, не будет отформатировано так, как этого хочет обмен. Попробуйте вместо этого (и не потребуется 2008R2):

$RData = (Get-User -Identity "$RUser" | Get-Mailbox | Select-Object Database)
Write-output “ENTER THE FOLLOWING DETAILS”
$DName = Read-Host “User Diplay Name"
$RUser = Read-Host "Replicate User(Database Grab)"
$RData = ((Get-Mailbox -Identity $RUser).Database).DistinguishedName
$REmail = Read-Host “Requester's Email Address"

Enable-Mailbox -Identity "$DName" -Database "$RData" 
Set-CASMailbox -Identity "$DName" -ActiveSyncEnabled $false -ImapEnabled $false -PopEnabled $false


Send-MailMessage -From "John Doe <John.Doe@Generic.com>" -To $REmail -Subject "$DName's email account" -Body "$DName's email account has been setup.`n`n`nJohn Doe`nGeneric Co.`nSystems Administrator`nOffice: 123.456.7890`nJohn.Doe@Generic.com" -SmtpServer GenericCo.Generic.com

Это моя почти финальная сборка. Я пытаюсь просто запросить имя запрашивающего вместо всего адреса электронной почты и получить команду PowerShell для его получения.

Это самое близкое, что я подошел. Хотите знать, правильно ли он передает адрес?

$REmailInput = Read-Host “Requester's Name(Notification Email goes to this Person)"
$REmail = Get-Mailbox -Identity "$REmailInput" | Select-Object PrimarySmtpAddress