Konvertieren von Exchange 2007-Postfächern in E-Mail-aktivierte Benutzer

Nachdem Sie eine mehrstufige Migration abgeschlossen haben, konvertieren Sie die Postfächer in E-Mail-aktivierte Benutzer, damit die Postfächer automatisch eine Verbindung mit dem Cloudpostfach herstellen können.

Gründe zum Konvertieren von Postfächern in E-Mail-aktivierte Benutzer

Wenn Sie eine mehrstufige Exchange-Migration zum Migrieren Ihrer lokalen Exchange 2007-Postfächer Ihrer Organisation zu Office 365 abgeschlossen haben, und Sie cloudbasierte Benutzer der lokalen Organisation mithilfe von Active Directory verwalten möchten, sollten Sie die lokalen Postfächer in E-Mail-aktivierte Benutzer konvertieren. Warum? Zwei Dinge geschehen, nachdem ein Postfach bei einer mehrstufigen Exchange-Migration in die Cloud migriert wurde:

  • Ein Benutzer verfügt über ein lokales Postfach und ein Cloudpostfach.

  • An das lokale Postfach des Benutzers gesendete E-Mails werden an sein Cloudpostfach weitergeleitet. Dies geschieht, da während der Migration die TargetAddress-Eigenschaft für das lokale Postfach mit der Remoteroutingadresse des Cloudpostfachs gefüllt wird. Dies bedeutet, dass Benutzer eine Verbindung mit ihren Cloudpostfächern herstellen müssen, um auf ihre E-Mails zugreifen zu können.

Dieses Verhalten führt zu zwei Problemen:

  • Wenn eine Person Microsoft Outlook zum Öffnen ihres Postfachs verwendet, versucht der AutoErmittlungsdienst weiterhin, eine Verbindung mit dem lokalen Postfach herzustellen. Der Benutzer ist dann nicht in der Lage, eine Verbindung mit seinem Cloudpostfach herzustellen. Wenn Benutzer vorhanden sind, die noch nicht in die Cloud migriert wurden, können Sie mit dem CNAME-Eintrag der AutoErmittlung nicht auf die Cloud verweisen, bis alle Benutzer migriert werden.

  • Wenn eine Organisation Exchange nach der Migration aller lokalen Postfächer in die Cloud außer Betrieb setzt, gehen nachrichtenbezogene Benutzerinformationen für das Cloudpostfach verloren. Das Microsoft Online Services-Verzeichnissynchronisierungstool (DirSync) entfernt Daten (z. B. Proxyadressen) aus dem Cloudpostfachobjekt, da das lokale Postfach nicht mehr vorhanden ist und es von DirSync nicht mit dem entsprechenden Cloudpostfach verglichen werden kann.

Die Lösung besteht darin, das lokale Postfach in einen E-Mail-aktivierten Benutzer in Ihrer lokalen Organisation zu konvertieren, nachdem das Postfach des Benutzers in die Cloud migriert wurde. Wenn Sie ein lokales Postfach in einen E-Mail-aktivierten Benutzer konvertieren:

  • Die Proxyadressen eines cloudbasierten Postfachs werden in den neuen E-Mail-aktivierten Benutzer kopiert. Wenn Sie Exchange außer Betrieb nehmen, bleiben diese Proxyadressen in Active Directory weiterhin erhalten.

  • Die Eigenschaften des E-Mail-aktivierten Benutzers ermöglichen es DirSync, den E-Mail-aktivierten Benutzer mit seinem entsprechenden Cloudpostfach zu vergleichen.

  • Der AutoErmittlungsdienst verwendet den E-Mail-aktivierten Benutzer, um Outlook mit dem Cloudpostfach zu verbinden, nachdem der Benutzer ein neues Outlook-Profil erstellt hat.

PowerShell-Skripts zum Erstellen E-Mail-aktivierter Benutzer

Sie können die nachfolgenden Skripts zum Erfassen von Informationen zu den cloudbasierten Postfächern und zum Konvertieren der Exchange 2007-Postfächer in E-Mail-aktivierte Benutzer verwenden.

Das folgende Skript erfasst Informationen aus Ihren Cloudpostfächern und speichert sie in einer CSV-Datei. Führen Sie dieses Skript zuerst aus.

Kopieren Sie das nachfolgende Skript, und weisen Sie ihm den Dateinamen "ExportO365UserInfo.ps1" zu.

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

Das folgende Skript konvertiert lokale Exchange 2007-Postfächer in E-Mail-aktivierte Benutzer. Führen Sie dieses Skript aus, nachdem Sie das Skript zum Erfassen von Informationen aus den Cloudpostfächern ausgeführt haben.

Kopieren Sie das folgende Skript in eine TXT-Datei, und speichern Sie die Datei dann unter "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

Einrichten von Schritten zum Konvertieren lokaler Postfächer in E-Mail-aktivierte Benutzer

Gehen Sie wie folgt vor, um den Vorgang abzuschließen.

  1. Kopieren Sie "ExportO365UserInfo.ps1", "Exchange2007MBtoMEU.ps1" und die zum Ausführen des Migrationsbatches verwendete CSV-Datei auf Ihrem lokalen Server in dasselbe Verzeichnis.

  2. Benennen Sie die CSV-Migrationsdatei in "migration.csv" um.

  3. . Führen Sie in der Exchange-Verwaltungsshell den folgenden Befehl aus. Bei dem Skript wird davon ausgegangen, dass sich die CSV-Datei in demselben Verzeichnis befindet und die Datei den Namen "migration.csv" aufweist.

    .\ExportO365UserInfo.ps1

    Sie werden aufgefordert, die vorhandene Sitzung zu verwenden oder eine neue Sitzung zu öffnen.

  4. Geben Sie n ein, und drücken Sie EINGABE, um eine neue Sitzung zu öffnen.

    Das Skript wird ausgeführt, das die Datei "Cloud.csv" im aktuellen Arbeitsverzeichnis speichert.

  5. Geben Sie die Anmeldeinformationen eines Administrators für Ihre cloudbasierte Organisation ein, und klicken Sie dann auf OK.

  6. Führen Sie in einer neuen Sitzung der Exchange-Verwaltungsshell den folgenden Befehl aus. Bei diesem Befehl wird davon ausgegangen, dass sich "ExportO365UserInfo.ps1" und "Cloud.csv" in demselben Verzeichnis befinden.

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

    Beispiel:

    .\Exchange2007MBtoMEU.ps1 DC1.contoso.com

    Das Skript konvertiert lokale Postfächer für alle in "Cloud.csv" enthaltenen Benutzer in E-Mail-aktivierte Benutzer.

  7. Überprüfen Sie, ob die neuen E-Mail-aktivierten Benutzer erstellt wurden. Führen Sie in Active Directory-Benutzer und -Computer folgende Schritte aus:

    1. Klicken Sie auf "Aktion" > "Suchen".

    2. Klicken Sie auf die Registerkarte "Exchange".

    3. Wählen Sie Nur Exchange-Empfänger anzeigen und dann Benutzer mit externer E-Mail-Adresse aus.

    4. Klicken Sie auf Jetzt suchen.

    Die Postfächer, die in E-Mail-aktivierte Benutzer konvertiert wurden, werden unter Suchergebnisse aufgelistet.

  8. Überprüfen Sie mithilfe von "Active Directory-Benutzer und -Computer", "ADSI Edit" oder "Ldp.exe", ob die folgenden Eigenschaften der E-Mail-aktivierten Benutzer mit den richtigen Informationen ausgefüllt werden.

    • legacyExchangeDN

    • mail

    • msExchMailboxGuid

    • proxyAddresses

    • targetAddress

Ihre Fähigkeiten erweitern
Schulung erkunden
Neue Funktionen als Erster erhalten
An Office Insider teilnehmen

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×