Exchange 2007-postvakken converteren naar gebruikers met e-mail

Nadat u een gefaseerde migratie hebt voltooid, converteert u de postvakken naar gebruikers met e-mail zodat de postvakken automatisch verbinding kunnen maken met het postvak in de cloud.

Waarom postvakken converteren naar gebruikers met e-mail?

Als u klaar bent met een gefaseerde migratie van Exchange om de on-premises Exchange 2007-postvakken in uw organisatie te converteren naar Office 365 en als u cloudgebruikers wilt beheren vanuit uw on-premises organisatie (met behulp van Active Directory), moet u de on-premises postvakken converteren naar gebruikers met e-mail (mail-enabled users, MEU). Waarom? Er gebeuren twee dingen nadat een postvak naar de cloud is gemigreerd in een gefaseerde migratie van Exchange:

  • Een gebruiker heeft een on-premises postvak en een postvak in de cloud.

  • E-mail die naar het on-premises postvak van de gebruiker is verzonden, wordt doorgestuurd naar het postvak in de cloud. Dit gebeurt omdat tijdens het migratieproces de TargetAddress-eigenschap van het on-premises postvak wordt ingevuld met het externe routingadres van het postvak in de cloud. Dit betekent dat gebruikers verbinding moeten maken met het postvak in de cloud om toegang tot hun e-mail te krijgen.

Dit gedrag heeft twee problemen als gevolg:

  • Als een persoon gebruikmaakt van Microsoft Outlook om het postvak te openen, probeert de service voor automatisch opsporen nog steeds verbinding te maken met het on-premises postvak en de gebruiker kan geen verbinding maken met het postvak in de cloud. Als er gebruikers zijn die nog niet naar de cloud zijn gemigreerd, kunt u de Autodiscover CNAME-record niet naar de cloud verwijzen totdat alle gebruikers zijn gemigreerd.

  • Als een organisatie Exchange buiten bedrijf stelt nadat alle on-premises postvakken naar de cloud zijn gemigreerd, gaan berichtgerelateerde gebruikersgegevens van het postvak in de cloud verloren. Microsoft Online Services Directorysynchronisatie (DirSync) verwijdert gegevens (zoals proxyadressen) van het postvakobject in de cloud, omdat het on-premises postvak niet langer bestaat en DirSync dit niet aan het bijbehorende postvak in de cloud kan koppelen.

Dit kan worden opgelost door in uw on-premises organisatie het on-premises postvak te converteren naar een gebruiker met e-mail (mail-enabled user, MEU), nadat het postvak van de gebruiker naar de cloud is gemigreerd. Een on-premises postvak converteren naar een gebruiker met e-mail:

  • De proxyadressen van een postvak in de cloud worden gekopieerd naar de nieuwe gebruiker met e-mail. Als u Exchange buiten bedrijf stelt, blijven deze proxyadressen nog steeds behouden in de Active Directory.

  • De eigenschappen van de gebruiker met e-mail stellen DirSync in staat om de gebruiker met e-mail aan het bijbehorende postvak in de cloud te koppelen.

  • De service voor automatisch opsporen gebruikt de gebruiker met e-mail om Outlook te koppelen aan het postvak in de cloud, nadat de gebruiker een nieuw Outlook-profiel heeft gemaakt.

PowerShell-scripts om gebruikers met e-mail te maken

U kunt de onderstaande scripts gebruiken om informatie te verzamelen over postvakken in de cloud en om Exchange 2007-postvakken te converteren naar gebruikers met e-mail.

Met het volgende script worden gegevens over uw postvakken in de cloud verzameld en opgeslagen in een CSV-bestand. Voer dit script eerst uit.

Kopieer het onderstaande script en geef hieraan de bestandsnaam 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

Met het volgende script worden on-premises Exchange 2007-postvakken geconverteerd naar gebruikers met e-mail. Voer dit script uit nadat u het script voor het verzamelen van informatie uit de postvakken in de cloud hebt uitgevoerd.

Kopieer het onderstaande script naar een TXT-bestand, sla het bestand op en geeft het de bestandsnaam 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

Instellingsstappen om on-premises postvakken te converteren naar gebruikers met e-mail

Ga als volgt te werk om het proces te voltooien:

  1. Kopieer ExportO365UserInfo.ps1, Exchange2007MBtoMEU.ps1 en het CSV-bestand dat is gebruikt voor het uitvoeren van de migratiebatch naar dezelfde map in uw on-premises server.

  2. Wijzig de naam van het CSV-migratiebestand in migration.csv.

  3. . Voer de volgende opdracht uit in de Exchange-beheershell. Het script gaat ervan uit dat het CSV-bestand zich in dezelfde map bevindt en de naam migration.csv heeft.

    .\ExportO365UserInfo.ps1

    U wordt gevraagd de bestaande sessie te gebruiken of een nieuwe sessie te openen.

  4. Typ n en druk op Enter om een nieuwe sessie te openen.

    Het script wordt uitgevoerd en slaat vervolgens het bestand Cloud.csv op in de huidige werkmap.

  5. Voer de beheerdersreferenties voor uw cloudorganisatie in en klik op OK.

  6. Voer de volgende opdracht uit in een nieuwe Exchange-beheershell-sessie. Deze opdracht gaat ervan uit dat ExportO365UserInfo.ps1 en Cloud.csv zich in dezelfde map bevinden.

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

    Bijvoorbeeld:

    .\Exchange2007MBtoMEU.ps1 DC1.contoso.com

    Het script converteert on-premises postvakken naar gebruikers met e-mail voor alle gebruikers in de Cloud.csv.

  7. Controleer of de nieuwe gebruikers met e-mail zijn gemaakt. Voer een van de volgende handelingen uit in Active Directory: gebruikers en computers:

    1. Klik op Actie > Zoeken

    2. Klik op het tabblad Exchange

    3. Selecteer Alleen Exchange-geadresseerden weergeven en vervolgens Gebruikers met een extern e-mailadres.

    4. Klik op Nu zoeken.

    De postvakken die zijn geconverteerd naar e-mail-gemachtigde gebruikers worden weergegeven onder Zoekresultaten.

  8. Gebruik Active Directory: gebruikers en computers, ADSI Edit of Ldp.exe om te controleren of de volgende eigenschappen voor gebruikers met e-mail de juiste informatie bevatten.

    • legacyExchangeDN

    • e-mail

    • msExchMailboxGuid

    • proxyAddresses

    • targetAddress

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Office Insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagents.

×