Перетворення поштових скриньок Exchange 2007 у користувачів пошти

Завершивши поетапне перенесення, потрібно перетворити поштові скриньки на користувачів пошти, щоб автоматично підключатися до хмарної поштової скриньки.

Переваги перетворення поштових скриньок на користувачів пошти

Якщо ви виконали поетапне перенесення Exchange, щоб перенести локальні поштові скриньки Exchange 2007 організації до Office 365, і хочете керувати хмарними користувачами з локальної організації за допомогою Active Directory, варто перетворити локальні поштові скриньки на користувачів пошти. Чому? Після того як поштову скриньку перенесено до хмари під час поетапного перенесення Exchange, відбувається ось що.

  • У користувача є локальна та хмарна поштові скриньки.

  • Пошта, надіслана до локальної поштової скриньки користувача, пересилається до його хмарної поштової скриньки. Це трапляється, тому що під час перенесення властивість TargetAddress локальної поштової скриньки заповнюється віддаленою адресою маршрутизації хмарної поштової скриньки. Таким чином, для доступу до електронної пошти користувачам потрібно підключитися до своїх хмарних поштових скриньок.

Це спричиняє дві проблеми:

  • Якщо користувач відкриває свою поштову скриньку за допомогою Microsoft Outlook, служба автовизначення надалі намагається підключитися до локальної поштової скриньки, тому користувач не зможе ввійти в хмарну поштову скриньку. Якщо до хмари перенесено не всіх користувачів, запис CNAME автовизначення неможливо налаштувати таким чином, щоб він указував на хмару.

  • Якщо організація припинить використовувати Exchange після перенесення всіх локальних поштових скриньок у хмару, пов’язані з повідомленнями відомості користувачів у хмарній поштовій скриньці буде втрачено. Засіб синхронізації Microsoft Online Services зі службою каталогів (засіб синхронізації Azure Active Directory) видаляє дані (наприклад, адреси проксі-сервера) з об’єкта хмарної поштової скриньки. Це зумовлено тим, що локальної поштової скриньки вже не існує, і засіб синхронізації Azure Active Directory не може зіставити її з відповідною хмарною поштовою скринькою.

Щоб усунути проблему, перетворіть локальну поштову скриньку на користувача пошти в локальній організації, після того як поштову скриньки користувача перенесено до хмари. Ось що відбувається при цьому:

  • Адреси проксі-сервера з хмарної поштової скриньки копіюються до нового користувача пошти та зберігаються в Active Directory, навіть коли ви припините використовувати Exchange.

  • Властивості користувача пошти дають змогу засобу синхронізації Azure Active Directory зіставити цього користувача з відповідною хмарною поштовою скринькою.

  • Служба автовизначення конфігурації сервера використовує користувача пошти, щоб підключити Outlook до хмарної поштової скриньки, після того як користувач створить профіль Outlook.

Сценарії PowerShell для створення користувачів пошти

Сценарії нижче дають змогу зібрати відомості про хмарні поштові скриньки та перетворити поштові скриньки Exchange 2007 на користувачів пошти.

Цей сценарій збирає відомості з хмарних поштових скриньок і зберігає їх у CSV-файл. Спочатку запустіть цей сценарій.

Скопіюйте наведений нижче сценарій та призначте йому ім’я файлу ExportO365UserInfo.ps1.

Param($migrationCSVFileName = "migration.csv")
function O365Logon
{
#Check for current open O365 sessions and allow the admin to either use the existing session or create a new one
$session = Get-PSSession | ?{$_.ConfigurationName -eq 'Microsoft.Exchange'}
if($session -ne $null)
{
$a = Read-Host "An open session to Office 365 already exists. Do you want to use this session? Enter y to use the open session, anything else to close and open a fresh session."
if($a.ToLower() -eq 'y')
{
Write-Host "Using existing Office 365 Powershell Session." -ForeGroundColor Green
return
}
$session | Remove-PSSession
}
Write-Host "Please enter your Office 365 credentials" -ForeGroundColor Green
$cred = Get-Credential
$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $cred -Authentication Basic -AllowRedirection
$importresults = Import-PSSession -Prefix "Cloud" $s
}
function Main
{
#Verify the migration CSV file exists
if(!(Test-Path $migrationCSVFileName))
{
Write-Host "File $migrationCSVFileName does not exist." -ForegroundColor Red
Exit
}
#Import user list from migration.csv file
$MigrationCSV = Import-Csv $migrationCSVFileName
#Get mailbox list based on email addresses from CSV file
$MailBoxList = $MigrationCSV | %{$_.EmailAddress} | Get-CloudMailbox
$Users = @()
#Get LegacyDN, Tenant, and On-Premise Email addresses for the users
foreach($user in $MailBoxList)
{
$UserInfo = New-Object System.Object
$CloudEmailAddress = $user.EmailAddresses | ?{($_ -match 'onmicrosoft') -and ($_ -cmatch 'smtp:')}
if ($CloudEmailAddress.Count -gt 1)
{
$CloudEmailAddress = $CloudEmailAddress[0].ToString().ToLower().Replace('smtp:', '')
Write-Host "$user returned more than one cloud email address. Using $CloudEmailAddress" -ForegroundColor Yellow
}
else
{
$CloudEmailAddress = $CloudEmailAddress.ToString().ToLower().Replace('smtp:', '')
}
$UserInfo | Add-Member -Type NoteProperty -Name LegacyExchangeDN -Value $user.LegacyExchangeDN
$UserInfo | Add-Member -Type NoteProperty -Name CloudEmailAddress -Value $CloudEmailAddress
$UserInfo | Add-Member -Type NoteProperty -Name OnPremiseEmailAddress -Value $user.PrimarySMTPAddress.ToString()
$UserInfo | Add-Member -Type NoteProperty -Name MailboxGUID -Value $user.ExchangeGUID
$Users += $UserInfo
}
#Check for existing csv file and overwrite if needed
if(Test-Path ".\cloud.csv")
{
$delete = Read-Host "The file cloud.csv already exists in the current directory. Do you want to delete it? Enter y to delete, anything else to exit this script."
if($delete.ToString().ToLower() -eq 'y')
{
Write-Host "Deleting existing cloud.csv file" -ForeGroundColor Red
Remove-Item ".\cloud.csv"
}
else
{
Write-Host "Will NOT delete current cloud.csv file. Exiting script." -ForeGroundColor Green
Exit
}
}
$Users | Export-CSV -Path ".\cloud.csv" -notype
(Get-Content ".\cloud.csv") | %{$_ -replace '"', ''} | Set-Content ".\cloud.csv" -Encoding Unicode
Write-Host "CSV File Successfully Exported to cloud.csv" -ForeGroundColor Green
}
O365Logon
Main

Цей сценарій перетворює локальні поштові скриньки Exchange 2007 на користувачів пошти. Запустіть цей сценарій після сценарію для збору відомостей із хмарних поштових скриньок.

Скопіюйте наведений нижче сценарій до TXT-файлу та збережіть його під іменем Exchange2007MBtoMEU.ps1.

param($DomainController = [String]::Empty)
function Main
{
#Script Logic flow
#1. Pull User Info from cloud.csv file in the current directory
#2. Lookup AD Info (DN, mail, proxyAddresses, and legacyExchangeDN) using the SMTP address from the CSV file
#3. Save existing proxyAddresses
#4. Add existing legacyExchangeDN's to proxyAddresses
#5. Delete Mailbox
#6. Mail-Enable the user using the cloud email address as the targetAddress
#7. Disable RUS processing
#8. Add proxyAddresses and mail attribute back to the object
#9. Add msExchMailboxGUID from cloud.csv to the user object (for offboarding support)
if($DomainController -eq [String]::Empty)
{
Write-Host "You must supply a value for the -DomainController switch" -ForegroundColor Red
Exit
}
$CSVInfo = Import-Csv ".\cloud.csv"
foreach($User in $CSVInfo)
{ Write-Host "Processing user" $User.OnPremiseEmailAddress -ForegroundColor Green
Write-Host "Calling LookupADInformationFromSMTPAddress" -ForegroundColor Green
$UserInfo = LookupADInformationFromSMTPAddress($User)
#Check existing proxies for On-Premise and Cloud Legacy DN's as x500 proxies. If not present add them.
$CloudLegacyDNPresent = $false
$LegacyDNPresent = $false
foreach($Proxy in $UserInfo.ProxyAddresses)
{
if(("x500:$UserInfo.CloudLegacyDN") -ieq $Proxy)
{
$CloudLegacyDNPresent = $true
}
if(("x500:$UserInfo.LegacyDN") -ieq $Proxy)
{
$LegacyDNPresent = $true
}
}
if(-not $CloudLegacyDNPresent)
{
$X500Proxy = "x500:" + $UserInfo.CloudLegacyDN
Write-Host "Adding $X500Proxy to EmailAddresses" -ForegroundColor Green
$UserInfo.ProxyAddresses += $X500Proxy
}
if(-not $LegacyDNPresent)
{
$X500Proxy = "x500:" + $UserInfo.LegacyDN
Write-Host "Adding $X500Proxy to EmailAddresses" -ForegroundColor Green
$UserInfo.ProxyAddresses += $X500Proxy
}
#Disable Mailbox
Write-Host "Disabling Mailbox" -ForegroundColor Green
Disable-Mailbox -Identity $UserInfo.OnPremiseEmailAddress -DomainController $DomainController -Confirm:$false
#Mail Enable
Write-Host "Enabling Mailbox" -ForegroundColor Green
Enable-MailUser -Identity $UserInfo.Identity -ExternalEmailAddress $UserInfo.CloudEmailAddress -DomainController $DomainController
#Disable RUS
Write-Host "Disabling RUS" -ForegroundColor Green
Set-MailUser -Identity $UserInfo.Identity -EmailAddressPolicyEnabled $false -DomainController $DomainController
#Add Proxies and Mail
Write-Host "Adding EmailAddresses and WindowsEmailAddress" -ForegroundColor Green
Set-MailUser -Identity $UserInfo.Identity -EmailAddresses $UserInfo.ProxyAddresses -WindowsEmailAddress $UserInfo.Mail -DomainController $DomainController
#Set Mailbox GUID. Need to do this via S.DS as Set-MailUser doesn't expose this property.
$ADPath = "LDAP://" + $DomainController + "/" + $UserInfo.DistinguishedName
$ADUser = New-Object -TypeName System.DirectoryServices.DirectoryEntry -ArgumentList $ADPath
$MailboxGUID = New-Object -TypeName System.Guid -ArgumentList $UserInfo.MailboxGUID
[Void]$ADUser.psbase.invokeset('msExchMailboxGUID',$MailboxGUID.ToByteArray())
Write-Host "Setting Mailbox GUID" $UserInfo.MailboxGUID -ForegroundColor Green
$ADUser.psbase.CommitChanges()
Write-Host "Migration Complete for" $UserInfo.OnPremiseEmailAddress -ForegroundColor Green
Write-Host ""
Write-Host ""
}
}
function LookupADInformationFromSMTPAddress($CSV)
{
$Mailbox = Get-Mailbox $CSV.OnPremiseEmailAddress -ErrorAction SilentlyContinue
if($Mailbox -eq $null)
{
Write-Host "Get-Mailbox failed for" $CSV.OnPremiseEmailAddress -ForegroundColor Red
continue
}
$UserInfo = New-Object System.Object
$UserInfo | Add-Member -Type NoteProperty -Name OnPremiseEmailAddress -Value $CSV.OnPremiseEmailAddress
$UserInfo | Add-Member -Type NoteProperty -Name CloudEmailAddress -Value $CSV.CloudEmailAddress
$UserInfo | Add-Member -Type NoteProperty -Name CloudLegacyDN -Value $CSV.LegacyExchangeDN
$UserInfo | Add-Member -Type NoteProperty -Name LegacyDN -Value $Mailbox.LegacyExchangeDN
$ProxyAddresses = @()
foreach($Address in $Mailbox.EmailAddresses)
{
$ProxyAddresses += $Address
}
$UserInfo | Add-Member -Type NoteProperty -Name ProxyAddresses -Value $ProxyAddresses
$UserInfo | Add-Member -Type NoteProperty -Name Mail -Value $Mailbox.WindowsEmailAddress
$UserInfo | Add-Member -Type NoteProperty -Name MailboxGUID -Value $CSV.MailboxGUID
$UserInfo | Add-Member -Type NoteProperty -Name Identity -Value $Mailbox.Identity
$UserInfo | Add-Member -Type NoteProperty -Name DistinguishedName -Value (Get-User $Mailbox.Identity).DistinguishedName
$UserInfo
}
Main

Кроки з перетворення локальних поштових скриньок на користувачів пошти

Щоб завершити процес, дотримуйтеся наведених нижче вказівок.

  1. Скопіюйте файли ExportO365UserInfo.ps1 і Exchange2007MBtoMEU.ps1, а також CSV-файл, який використовувався для запуску пакета перенесення, до одного каталогу на локальному сервері.

  2. Перейменуйте CSV-файл перенесення в migration.csv.

  3. . В оболонці керування Exchange виконайте наведену нижче команду. Сценарій припускає, що CSV-файл розташовано в тому самому каталозі під іменем migration.csv.

    .\ExportO365UserInfo.ps1

    Вам буде запропоновано скористатися наявним сеансом або відкрити новий.

  4. Введіть n і натисніть клавішу Enter, щоб відкрити новий сеанс.

    Після запуску сценарій збереже файл Cloud.csv в поточному робочому каталозі.

  5. Введіть облікові дані адміністратора для вашої хмарної організації та натисніть кнопку OK.

  6. У новому сеансі оболонки керування Exchange виконайте наведену нижче команду. Ця команда припускає, що файли ExportO365UserInfo.ps1 і Cloud.csv розташовано в одному каталозі.

    .\Exchange2007MBtoMEU.ps1 <FQDN of on-premises domain controller>

    Наприклад:

    .\Exchange2007MBtoMEU.ps1 DC1.contoso.com

    Сценарій перетворить на користувачів пошти локальні поштові скриньки для всіх користувачів, указаних у файлі Cloud.csv.

  7. Переконайтеся, що користувачів пошти створено. У засобі "Active Directory – користувачі й комп’ютери" зробіть ось що:

    1. Клацніть "Action (Дії) > Find (Знайти)".

    2. Перейдіть на вкладку Exchange.

    3. Виберіть Show only Exchange recipients (Показати лише одержувачів Exchange), а потім – Users with external email address (Користувачі із зовнішньою адресою електронної пошти).

    4. Натисніть кнопку Find Now (Знайти).

    Поштові скриньки, перетворені на користувачів пошти, відобразяться в розділі Search results (Результати пошуку).

  8. За допомогою засобу "Active Directory – користувачі й комп’ютери", ADSI Edit або Ldp.exe переконайтеся, що наведені нижче властивості користувача пошти заповнено правильними відомостями.

    • legacyExchangeDN

    • mail

    • msExchMailboxGuid

    • proxyAddresses

    • targetAddress

Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×