Konvertera Exchange 2007-postlådor till e-postanvändare

När du har genomfört en stegvis migrering konverterar du postlådor till e-postaktiverade användare så att postlådorna kan ansluta automatiskt till den molnbaserade postlådan.

Varför du bör konvertera postlådor till e-postaktiverade användare.

Om du har genomfört en stegvis Exchange-migrering för att migrera organisationens lokala Exchange 2007-postlådor till Office 365 och vill hantera molnbaserade användare via din lokala organisation, bör du konvertera lokala postlådor till e-postaktiverade användare med hjälp av Active Directory. Varför? Två saker händer när en postlåda har migrerats till molnet efter en stegvis Exchange-migrering.

  • En användare har en lokal postlåda och en postlåda i molnet.

  • E-post som skickas till användarens lokala postlåda vidarebefordras till hans/hennes postlåda i molnet. Det sker på grund av att den lokala postlådans TargetAddress-egenskap fylls i med den molnbaserade postlådans adress för fjärrdirigering under migreringsprocessen. Det innebär att användaren måste ansluta till sin molnbaserade postlåda för att komma åt sin e-post.

Det här beteendet leder till två problem:

  • Om en person använder Microsoft Outlook för att öppna postlådan försöker tjänsten för automatisk upptäckt fortfarande att ansluta till den lokala postlådan, vilket gör att användaren inte kan ansluta till postlådan i molnet. Du kan inte peka CNAME-posten för automatisk upptäckt till molnet förrän alla användare har migreras.

  • Om en organisation stänger av Exchange när alla lokala postlådor har migrerats till molnet förloras användarinformation för snabbmeddelanden för den molnbaserade postlådan. Verktyget Microsoft Online Services Katalogsynkronisering (eller Azure Active Directory-synkroniseringsverktyg) tar bort data (till exempel proxyadresser) från det molnbaserade postlådeobjektet eftersom den lokala postlådan inte finns längre och Azure Active Directory-synkroniseringsverktyg inte kan matcha den mot den motsvarande molnbaserade postlådan.

Lösningen är att konvertera den lokala postlådan till en e-postaktiverad användare i den lokala organisationen när användarens postlåda har migrerats till molnet. När du konverterar en lokal postlåda till en e-postaktiverad användare:

  • Proxyadresser från en molnbaserad postlåda kopieras till den nya e-postaktiverade användaren. Om du inaktiverar Exchange finns dessa proxyadresser fortfarande kvar i Active Directory.

  • Egenskaperna för den e-postaktiverade användaren gör att Azure Active Directory-synkroniseringsverktyg kan matcha den e-postaktiverade användaren med dess motsvarande molnbaserade postlåda.

  • Tjänsten för automatisk upptäckt använder den e-postaktiverade användaren för att ansluta Outlook till postlådan i molnet när användaren skapar en ny Outlook-profil.

PowerShell-skript för att skapa e-postaktiverade användare

Med skripten nedan kan du samla in information om de molnbaserade postlådorna och konvertera Exchange 2007-postlådor till e-postaktiverade användare.

Följande skript samlar in information från dina molnbaserade postlådor och sparar den till en CSV-fil. Kör det här skriptet först.

Kopiera skriptet nedan och ge den filnamnet 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

Med följande skript konverterar du lokala Exchange 2007-postlådor till e-postaktiverade användare. Kör det här skriptet när du har kört skriptet för att samla in information från de molnbaserade postlådorna.

Kopiera skriptet nedan till en .txt-fil och spara filen med filnamnet 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

Konfigurationssteg för att konvertera lokala postlådor till e-postaktiverade användare

Slutför processen genom att följa anvisningarna nedan:

  1. Kopiera ExportO365UserInfo.ps1, Exchange2007MBtoMEU.ps1 och CSV-filen som används för att köra migreringsbatchen till samma katalog på den lokala servern.

  2. Byt namn på CSV-migreringsfilen till migration.csv.

  3. . Kör följande kommando i Exchange Management Shell. Skriptet förutsätter att CSV-filen finns i samma katalog och heter migration.csv.

    .\ExportO365UserInfo.ps1

    Du uppmanas att använda en befintlig session eller öppna en ny session.

  4. Öppna en ny session genom att skriva n och trycka på Retur.

    Skriptet körs och sparar sedan filen Cloud.csv i aktuell arbetskatalog.

  5. Ange administratörsuppgifterna för den molnbaserade organisationen och klicka på OK.

  6. Kör följande kommando i en ny Exchange Management Shell-session. Det här kommandot förutsätter att ExportO365UserInfo.ps1 och Cloud.csv finns i samma katalog.

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

    Till exempel:

    .\Exchange2007MBtoMEU.ps1 DC1.contoso.com

    Skriptet konverterar lokala postlådor till e-postaktiverade användare för alla användare som finns med i Cloud.csv.

  7. Kontrollera att de nya e-postaktiverade användarna har skapats. I Active Directory - användare och datorer gör du följande:

    1. Klicka på Åtgärd > Sök

    2. Klicka på fliken Exchange

    3. Välj Visa bara Exchange-mottagare och välj sedan Användare med extern e-postadress.

    4. Klicka på Sök nu.

    Postlådorna som har konverterats till e-postaktiverade användare visas under Sökresultat.

  8. Kontrollera att egenskaperna för e-postaktiverade användare fylls med rätt information med hjälp av Active Directory - användare och datorer, ADSI-redigering eller Ldp.exe.

    • legacyExchangeDN

    • mail

    • msExchMailboxGuid

    • proxyAddresses

    • targetAddress

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×