Convertire le cassette postali di Exchange 2003 in utenti abilitati per la posta in Exchange Online
Dopo aver completato una migrazione a fasi, convertire le cassette postali locali in utenti abilitati alla posta elettronica in modo che gli utenti locali possano connettersi automaticamente alle cassette postali cloud.
Perché convertire le cassette postali in utenti abilitati alla posta elettronica?
È necessario convertire le cassette postali locali di cui è stata eseguita la migrazione in utenti abilitati alla posta elettronica (MEU) in modo da poter gestire gli utenti basati sul cloud dall'organizzazione locale usando Active Directory.
Questo articolo include uno script di PowerShell che raccoglie informazioni dalle cassette postali basate sul cloud e uno script di Visual Basic (VB) che converte le cassette postali di Exchange 2003 in MEU. Quando si esegue questo script, gli indirizzi proxy dalla cassetta postale basata sul cloud vengono copiati nell'utente abilitato alla posta elettronica, che risiede in Active Directory. Le proprietà del MEU consentono la sincronizzazione della directory in modo che corrisponda al MEU con la cassetta postale cloud corrispondente.
È consigliabile convertire le cassette postali locali in MEU per un batch di migrazione. Al termine di un batch di migrazione a fasi di Exchange, è stato verificato che è stata eseguita correttamente la migrazione di tutte le cassette postali nel batch e che la sincronizzazione iniziale degli elementi delle cassette postali nel cloud è stata completata, convertire le cassette postali nel batch di migrazione in UNITÀ DI SICUREZZA.
Script di PowerShell per raccogliere dati da cassette postali cloud
Usare gli script in questa sezione per raccogliere informazioni sulle cassette postali basate sul cloud e per convertire le cassette postali di Exchange 2003 in MEU.
Lo script di PowerShell raccoglie le informazioni dalle cassette postali cloud e le salva in un file CSV. Eseguire prima questo script.
Copiare lo script nel Blocco note e salvare il file come ExportO365UserInfo.ps1.
Nota
Prima di eseguire lo script, è necessario installare il modulo Exchange Online PowerShell. Per istruzioni, vedere Installare e gestire il modulo Exchange Online PowerShell. Il modulo usa l'autenticazione moderna.
- In genere, si possono usare gli script così come sono se la propria organizzazione è Microsoft 365 o Microsoft 365 GCC. Se l’organizzazione è Office 365 Germania, Microsoft 365 GCC High o Microsoft 365 DoD è necessario modificare la riga
Connect-ExchangeOnline
nello script. In particolare, è necessario usare il parametro ExchangeEnvironmentName e il valore appropriato per l'organizzazione. Per ulteriori informazioni, vedere gli esempi in Connessione a Exchange Online PowerShell.
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 Exchange Online PowerShell 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 Exchange Online Powershell Session." -ForeGroundColor Green
return
}
Disconnect-ExchangeOnline -Confirm:$false
}
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
}
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-Mailbox
$Users = @()
#Get LegacyDN, Tenant, and On-Premises 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()
$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
Lo script di Visual Basic converte le cassette postali di Exchange 2003 locali in MEU. Eseguire questo script dopo aver eseguito lo script di PowerShell per raccogliere informazioni dalle cassette postali cloud.
Copiare lo script nel Blocco note e salvare il file come Exchange2003MBtoMEU.vbs.
'Globals/Constants
Const ADS_PROPERTY_APPEND = 3
Dim UserDN
Dim remoteSMTPAddress
Dim remoteLegacyDN
Dim domainController
Dim csvMode
csvMode = FALSE
Dim csvFileName
Dim lastADLookupFailed
Class UserInfo
public OnPremiseEmailAddress
public CloudEmailAddress
public CloudLegacyDN
public LegacyDN
public ProxyAddresses
public Mail
public MailboxGUID
public DistinguishedName
Public Sub Class_Initialize()
Set ProxyAddresses = CreateObject("Scripting.Dictionary")
End Sub
End Class
'Command Line Parameters
If WScript.Arguments.Count = 0 Then
'No parameters passed
WScript.Echo("No parameters were passed.")
ShowHelp()
ElseIf StrComp(WScript.Arguments(0), "-c", vbTextCompare) = 0 And WScript.Arguments.Count = 2 Then
WScript.Echo("Missing DC Name.")
ShowHelp()
ElseIf StrComp(WScript.Arguments(0), "-c", vbTextCompare) = 0 Then
'CSV Mode
csvFileName = WScript.Arguments(1)
domainController = WScript.Arguments(2)
csvMode = TRUE
WScript.Echo("CSV mode detected. Filename: " & WScript.Arguments(1) & vbCrLf)
ElseIf wscript.Arguments.Count <> 4 Then
'Invalid Arguments
WScript.Echo WScript.Arguments.Count
Call ShowHelp()
Else
'Manual Mode
UserDN = wscript.Arguments(0)
remoteSMTPAddress = wscript.Arguments(1)
remoteLegacyDN = wscript.Arguments(2)
domainController = wscript.Arguments(3)
End If
Main()
'Main entry point
Sub Main
'Check for CSV Mode
If csvMode = TRUE Then
UserInfoArray = GetUserInfoFromCSVFile()
Else
WScript.Echo "Manual Mode Detected" & vbCrLf
Set info = New UserInfo
info.CloudEmailAddress = remoteSMTPAddress
info.DistinguishedName = UserDN
info.CloudLegacyDN = remoteLegacyDN
ProcessSingleUser(info)
End If
End Sub
'Process a single user (manual mode)
Sub ProcessSingleUser(ByRef UserInfo)
userADSIPath = "LDAP://" & domainController & "/" & UserInfo.DistinguishedName
WScript.Echo "Processing user " & userADSIPath
Set MyUser = GetObject(userADSIPath)
proxyCounter = 1
For Each address in MyUser.Get("proxyAddresses")
UserInfo.ProxyAddresses.Add proxyCounter, address
proxyCounter = proxyCounter + 1
Next
UserInfo.OnPremiseEmailAddress = GetPrimarySMTPAddress(UserInfo.ProxyAddresses)
UserInfo.Mail = MyUser.Get("mail")
UserInfo.MailboxGUID = MyUser.Get("msExchMailboxGUID")
UserInfo.LegacyDN = MyUser.Get("legacyExchangeDN")
ProcessMailbox(UserInfo)
End Sub
'Populate user info from CSV data
Function GetUserInfoFromCSVFile()
CSVInfo = ReadCSVFile()
For i = 0 To (UBound(CSVInfo)-1)
lastADLookupFailed = false
Set info = New UserInfo
info.CloudLegacyDN = Split(CSVInfo(i+1), ",")(0)
info.CloudEmailAddress = Split(CSVInfo(i+1), ",")(1)
info.OnPremiseEmailAddress = Split(CSVInfo(i+1), ",")(2)
WScript.Echo "Processing user " & info.OnPremiseEmailAddress
WScript.Echo "Calling LookupADInformationFromSMTPAddress"
LookupADInformationFromSMTPAddress(info)
If lastADLookupFailed = false Then
WScript.Echo "Calling ProcessMailbox"
ProcessMailbox(info)
End If
set info = nothing
Next
End Function
'Populate user info from AD
Sub LookupADInformationFromSMTPAddress(ByRef info)
'Lookup the rest of the info in AD using the SMTP address
Set objRootDSE = GetObject("LDAP://RootDSE")
strDomain = objRootDSE.Get("DefaultNamingContext")
Set objRootDSE = nothing
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
BaseDN = "<LDAP://" & domainController & "/" & strDomain & ">"
adFilter = "(&(proxyAddresses=SMTP:" & info.OnPremiseEmailAddress & "))"
Attributes = "distinguishedName,msExchMailboxGUID,mail,proxyAddresses,legacyExchangeDN"
Query = BaseDN & ";" & adFilter & ";" & Attributes & ";subtree"
objCommand.CommandText = Query
Set objCommand.ActiveConnection = objConnection
On Error Resume Next
Set objRecordSet = objCommand.Execute
'Handle any errors that result from the query
If Err.Number <> 0 Then
WScript.Echo "Error encountered on query " & Query & ". Skipping user."
lastADLookupFailed = true
return
End If
'Handle zero or ambiguous search results
If objRecordSet.RecordCount = 0 Then
WScript.Echo "No users found for address " & info.OnPremiseEmailAddress
lastADLookupFailed = true
return
ElseIf objRecordSet.RecordCount > 1 Then
WScript.Echo "Ambiguous search results for email address " & info.OnPremiseEmailAddress
lastADLookupFailed = true
return
ElseIf Not objRecordSet.EOF Then
info.LegacyDN = objRecordSet.Fields("legacyExchangeDN").Value
info.Mail = objRecordSet.Fields("mail").Value
info.MailboxGUID = objRecordSet.Fields("msExchMailboxGUID").Value
proxyCounter = 1
For Each address in objRecordSet.Fields("proxyAddresses").Value
info.ProxyAddresses.Add proxyCounter, address
proxyCounter = proxyCounter + 1
Next
info.DistinguishedName = objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
End If
objConnection = nothing
objCommand = nothing
objRecordSet = nothing
On Error Goto 0
End Sub
'Populate data from the CSV file
Function ReadCSVFile()
'Open file
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFS.OpenTextFile(csvFileName, 1, false, -1)
'Loop through each line, putting each line of the CSV file into an array to be returned to the caller
counter = 0
Dim CSVArray()
Do While NOT objTextFile.AtEndOfStream
ReDim Preserve CSVArray(counter)
CSVArray(counter) = objTextFile.ReadLine
counter = counter + 1
Loop
'Close and return
objTextFile.Close
Set objTextFile = nothing
Set objFS = nothing
ReadCSVFile = CSVArray
End Function
'Process the migration
Sub ProcessMailbox(User)
'Get user properties
userADSIPath = "LDAP://" & domainController & "/" & User.DistinguishedName
Set MyUser = GetObject(userADSIPath)
'Add x.500 address to list of existing proxies
existingLegDnFound = FALSE
newLegDnFound = FALSE
'Loop through each address in User.ProxyAddresses
For i = 1 To User.ProxyAddresses.Count
If StrComp(address, "x500:" & User.LegacyDN, vbTextCompare) = 0 Then
WScript.Echo "x500 proxy " & User.LegacyDN & " already exists"
existingLegDNFound = true
End If
If StrComp(address, "x500:" & User.CloudLegacyDN, vbTextCompare) = 0 Then
WScript.Echo "x500 proxy " & User.CloudLegacyDN & " already exists"
newLegDnFound = true
End If
Next
'Add existing leg DN to proxy list
If existingLegDnFound = FALSE Then
WScript.Echo "Adding existing legacy DN " & User.LegacyDN & " to proxy addresses"
User.ProxyAddresses.Add (User.ProxyAddresses.Count+1),("x500:" & User.LegacyDN)
End If
'Add new leg DN to proxy list
If newLegDnFound = FALSE Then
'Add new leg DN to proxy addresses
WScript.Echo "Adding new legacy DN " & User.CloudLegacyDN & " to existing proxy addresses"
User.ProxyAddresses.Add (User.ProxyAddresses.Count+1),("x500:" & User.CloudLegacyDN)
End If
'Dump out new list of addresses
WScript.Echo "Original proxy addresses updated count: " & User.ProxyAddresses.Count
For i = 1 to User.ProxyAddresses.Count
WScript.Echo " proxyAddress " & i & ": " & User.ProxyAddresses(i)
Next
'Delete the Mailbox
WScript.Echo "Opening " & userADSIPath & " as CDOEXM::IMailboxStore object"
Set Mailbox = MyUser
Wscript.Echo "Deleting Mailbox"
On Error Resume Next
Mailbox.DeleteMailbox
'Handle any errors deleting the mailbox
If Err.Number <> 0 Then
WScript.Echo "Error " & Err.number & ". Skipping User." & vbCrLf & "Description: " & Err.Description & vbCrLf
Exit Sub
End If
On Error Goto 0
'Save and continue
WScript.Echo "Saving Changes"
MyUser.SetInfo
WScript.Echo "Refeshing ADSI Cache"
MyUser.GetInfo
Set Mailbox = nothing
'Mail Enable the User
WScript.Echo "Opening " & userADSIPath & " as CDOEXM::IMailRecipient"
Set MailUser = MyUser
WScript.Echo "Mail Enabling user using targetAddress " & User.CloudEmailAddress
MailUser.MailEnable User.CloudEmailAddress
WScript.Echo "Disabling Recipient Update Service for user"
MyUser.PutEx ADS_PROPERTY_APPEND, "msExchPoliciesExcluded", Array("{26491CFC-9E50-4857-861B-0CB8DF22B5D7}")
WScript.Echo "Saving Changes"
MyUser.SetInfo
WScript.Echo "Refreshing ADSI Cache"
MyUser.GetInfo
'Add Legacy DN back on to the user
WScript.Echo "Writing legacyExchangeDN as " & User.LegacyDN
MyUser.Put "legacyExchangeDN", User.LegacyDN
'Add old proxies list back on to the MEU
WScript.Echo "Writing proxyAddresses back to the user"
For j=1 To User.ProxyAddresses.Count
MyUser.PutEx ADS_PROPERTY_APPEND, "proxyAddresses", Array(User.ProxyAddresses(j))
MyUser.SetInfo
MyUser.GetInfo
Next
'Add mail attribute back on to the MEU
WScript.Echo "Writing mail attribute as " & User.Mail
MyUser.Put "mail", User.Mail
'Add msExchMailboxGUID back on to the MEU
WScript.Echo "Converting mailbox GUID to writable format"
Dim mbxGUIDByteArray
Call ConvertHexStringToByteArray(OctetToHexString(User.MailboxGUID), mbxGUIDByteArray)
WScript.Echo "Writing property msExchMailboxGUID to user object with value " & OctetToHexString(User.MailboxGUID)
MyUser.Put "msExchMailboxGUID", mbxGUIDByteArray
WScript.Echo "Saving Changes"
MyUser.SetInfo
WScript.Echo "Migration Complete!" & vbCrLf
End Sub
'Returns the primary SMTP address of a user
Function GetPrimarySMTPAddress(Addresses)
For Each address in Addresses
If Left(address, 4) = "SMTP" Then GetPrimarySMTPAddress = address
Next
End Function
'Converts Hex string to byte array for writing to AD
Sub ConvertHexStringToByteArray(ByVal strHexString, ByRef pByteArray)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Stream = CreateObject("ADODB.Stream")
Temp = FSO.GetTempName()
Set TS = FSO.CreateTextFile(Temp)
For i = 1 To (Len (strHexString) -1) Step 2
TS.Write Chr("&h" & Mid (strHexString, i, 2))
Next
TS.Close
Stream.Type = 1
Stream.Open
Stream.LoadFromFile Temp
pByteArray = Stream.Read
Stream.Close
FSO.DeleteFile Temp
Set Stream = nothing
Set FSO = Nothing
End Sub
'Converts raw bytes from AD GUID to readable string
Function OctetToHexString (arrbytOctet)
OctetToHexStr = ""
For k = 1 To Lenb (arrbytOctet)
OctetToHexString = OctetToHexString & Right("0" & Hex(Ascb(Midb(arrbytOctet, k, 1))), 2)
Next
End Function
Sub ShowHelp()
WScript.Echo("This script runs in two modes, CSV Mode and Manual Mode." & vbCrLf & "CSV Mode allows you to specify a CSV file from which to pull usernames." & vbCrLf& "Manual mode allows you to run the script against a single user.")
WSCript.Echo("Both modes require you to specify the name of a DC to use in the local domain." & vbCrLf & "To run the script in CSV Mode, use the following syntax:")
WScript.Echo(" cscript Exchange2003MBtoMEU.vbs -c x:\csv\csvfilename.csv dc.domain.com")
WScript.Echo("To run the script in Manual Mode, you must specify the users AD Distinguished Name, Remote SMTP Address, Remote Legacy Exchange DN, and Domain Controller Name.")
WSCript.Echo(" cscript Exchange2003MBtoMEU.vbs " & chr(34) & "CN=UserName,CN=Users,DC=domain,DC=com" & chr(34) & " " & chr(34) & "user@cloudaddress.com" & chr(34) & " " & chr(34) & "/o=Cloud Org/ou=Cloud Site/ou=Recipients/cn=CloudUser" & chr(34) & " dc.domain.com")
WScript.Quit
End Sub
Cosa fanno gli script?
ExportO365UserInfo.ps1
ExportO365UserInfo.ps1 è uno script di PowerShell eseguito nell'organizzazione basata sul cloud per raccogliere informazioni sulle cassette postali cloud di cui è stata eseguita la migrazione a fasi di Exchange. Usa un file CSV per definire l'ambito del batch di utenti. È consigliabile usare lo stesso file CSV di migrazione usato per eseguire la migrazione di un batch di utenti.
Quando si esegue lo script ExportO365UserInfo, si verificano le azioni seguenti:
- Le proprietà seguenti vengono raccolte dalle cassette postali cloud per gli utenti elencati nel file CSV di input:
- Indirizzo SMTP primario.
- Indirizzo SMTP primario della cassetta postale locale corrispondente.
- Altri indirizzi proxy per la cassetta postale cloud.
- LegacyExchangeDN
- Le proprietà raccolte vengono salvate in un file CSV denominato Cloud.csv.
Exchange2003MBtoMEU.vbs
Exchange2003MBtoMEU.vbs è uno script VB eseguito nell'organizzazione di Exchange 2003 locale per convertire le cassette postali in MEU. Usa il file Cloud.csv prodotto dallo script di PowerShell ExportO365UserInfo.ps1.
Quando si esegue lo script Exchange2003MBtoMEU.vbs, si verificano le azioni seguenti per ogni cassetta postale elencata nel file CSV di input:
- Raccoglie informazioni dal file CSV di input e dalla cassetta postale locale.
- Crea un elenco di indirizzi proxy dalla cassetta postale locale e nel cloud per aggiungerlo all'utente abilitato alla posta elettronica.
- Elimina la cassetta postale locale.
- Crea un MEU con le proprietà seguenti:
legacyExchangeDN: valore dalla cassetta postale locale.
mail: SMTP primario della cassetta postale cloud.
msExchMailboxGuid: valore dalla cassetta postale locale.
proxyAddresses: valori della cassetta postale locale e della cassetta postale cloud.
targetAddress: lettura dalla cassetta postale locale; il valore è il SMTP primario della cassetta postale cloud.
Importante
Per abilitare l'off-boarding da Exchange Online a Exchange 2003, è necessario sostituire il valore della proprietà msExchMailboxGuid nel MEU con il GUID della cassetta postale basata sul cloud. Per ottenere i valori GUID per le cassette postali basate sul cloud e salvarli in un file CSV, eseguire il comando Exchange Online PowerShell seguente:
Get-Mailbox | Select PrimarySmtpAddress,Guid | Export-csv -Path .\guid.csv
Questo comando estrae l'indirizzo SMTP principale e il GUID per tutte le cassette postali nel cloud nel file guid.csv e quindi salva il file nella directory corrente.
Invece di usare il file CSV di input per convertire un batch di cassette postali, è possibile eseguire lo script Exchange2003MBtoMEU.vbs in modalità manuale per convertire una sola cassetta postale alla volta. Se si sceglie questo metodo, è necessario specificare i parametri di input seguenti:
- Nome distinto (DN) della cassetta postale locale.
- Indirizzo SMTP principale della cassetta postale nel cloud.
- DN legacy di Exchange per la cassetta postale nel cloud.
- Un nome di controller di dominio nell'organizzazione di Exchange 2003.
Procedura per convertire le cassette postali locali in utenti abilitati alla posta elettronica
Eseguire ExportO365UserInfo.ps1 nell'organizzazione Exchange Online. Usare file CSV per il batch di migrazione come file di input. Lo script crea un file CSV denominato Cloud.csv.
cd <location of the script> .\ExportO365UserInfo.ps1 <CSV input file>
Ad esempio:
cd c:\data\scripts .\ExportO365UserInfo.ps1 .\MigrationBatch1.csv
Copiare Exchange2003MBtoMEU.vbs e Cloud.csv nella stessa directory nell'organizzazione locale.
Nell'organizzazione locale eseguire il comando seguente:
cscript Exchange2003MBtoMEU.vbs -c .\Cloud.csv <FQDN of on-premises domain controller>
Ad esempio:
cscript Exchange2003MBtoMEU.vbs -c .\Cloud.csv DC1.contoso.com
Per eseguire lo script in modalità manuale, immettere il comando seguente. Inserire spazi tra ogni valore.
cscript Exchange2003MBtoMEU.vbs "<DN of on-premises mailbox>" "<Primary SMTP of cloud mailbox>" "<ExchangeLegacyDN of cloud mailbox>" <FQDN of on-premises domain controller>
Ad esempio:
cscript Exchange2003MBtoMEU.vbs "CN=Ann Beebe,CN=Users,DC=contoso,DC=com" "annb@contoso.onmicrosoft.com" "/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=d808d014cec5411ea6de1f70cc116e7b-annb" DC1.contoso.com
Verificare di avere creato i nuovi utenti abilitati alla posta elettronica. In Utenti e computer di Active Directory seguire questa procedura:
Fare clic su Ricerca azioni>.
Fare clic sulla scheda Exchange.
Selezionare Mostra solo destinatari di Exchange, quindi selezionare Utenti con indirizzi e-mail esterni.
Fare clic su Trova ora.
Le cassette postali convertite in utenti abilitati alla posta elettronica vengono elencate in Risultati della ricerca.
Usare Utenti e computer di Active Directory, modifica dell'identità del servizio gestito o Ldp.exe per verificare che le proprietà MEU seguenti siano popolate con le informazioni corrette:
- Legacyexchangedn
- msExchMailboxGuid*
- Proxyaddresses
- Targetaddress
* Come spiegato in precedenza, lo script Exchange2003MBtoMEU.vbs mantiene il valore msExchMailboxGuid dalla cassetta postale locale. Per abilitare l'off-boarding da Microsoft 365 o Office 365 a Exchange 2003, è necessario sostituire il valore della proprietà msExchMailboxGuid nel MEU con il GUID della cassetta postale basata sul cloud.