Problem:
Aus dem Active Directory nach Office 365 exportierte Benutzer haben als erste E-Mail-Adresse nicht die gewünschten “Domänenerweiterungen”, sondern Adressen nach dem Muster
Benutzername@MeineFirma.onmicrosoft.com
und zusätzlich
Benutzername@wunschdomain.at
Mails können an beide Adressen versandt bzw. empfangen werden, beim Versenden wird aber die unerwünschte
Benutzername@MeineFirma.onmicrosoft.com
als Absenderadresse verwendet, was nicht nur etwas ungünstig wirkt, sondern bei manchen als SPAM klassifiziert wird.
Ursache:
Während der Synchronisierung der Benutzer aus Active Directory mittels Synchronization Service Manager bzw. Azure AD Connect werden auch alle Attribute synchronisiert. Dazu zählt auch das Feld “E-Mail”.
Ist dieses Feld leer, dann wird nach der Synchronisierung automatisch eine Mailbox angelegt nach obigem Muster.
Der Versuch, den Eintrag für den Primären SMTP-Server per PowerShell zu ändern schlägt fehl!
Fehlermeldung:
Fehler bei Vorgang für Postfach "BRGM_TestUser", da es außerhalb des Schreibbereichs für den aktuellen Benutzer liegt. Die Aktion 'Set-Mailbox', 'EmailAddresses', kann nicht für das Objekt 'BRGM_TestUser' durchgeführt werden, weil dieses Objekt von lokal synchronisiert wird. Diese Aktion sollte lokal für das Objekt durchgeführt werden.
——————————– EXKURS – ist zur Problemlösung völlig uninteressant ——————-
Zur Info – und damit ich es selber schneller finde beim nächsten Anlass:
1.) PowerShell-Script, um alle User inkl. einschlägiger Attribute in ein csv zu exportieren:
HINWEIS: PowerShell als Administrator starten und folgenden Befehl absetzen:
Set-ExecutionPolicy Unrestricted
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $cred -Authentication Basic -AllowRedirection Import-PSSession $session Get-Mailbox -Resultsize Unlimited | Select Alias, UserPrincipalName, WindowsEmailAddress | Export-Csv "C:\off365\user.csv"
2.) csv entsprechend ändern – WICHTIG: Felder MÜSSEN mit KOMMA (NICHT SEMIKOLON) getrennt sein!!!
Recipient | PrimaryEmail | AliasEmail |
edi.mustermann | edi.mustermann@MeineSchule.at | edi.mustermann@MeineSchule.onmicrosoft.com |
3.) Das PowerShell-Script, das mit den Daten aus dem .csv die Primary SMTP-Address ändert:
$Recipients = Import-Csv C:\off365\User.csv Foreach ($Mailbox in $Recipients) { Set-Mailbox -Identity $Mailbox.Recipient -EmailAddresses $Mailbox.PrimaryEmail,$Mailbox.AliasEmail }
——————————————————— EXKURS – ENDE ——————————————————–
Lösung:
Das entsprechende Attribut “E-Mail” muss direkt in Active Directory am DC für den jeweiligen User geändert werden! (Im FachChargon würde das dann “On Premises” genannt werden)
Danach wird es automatisch synchronisiert und die Einträge stimmen auch in Office 365.
Nachdem das für ein paar Hundert User nicht manuell durchführbar ist, hier ein VBScript, mit dem im Bulk – also massenhaft – Benutzern das Attribut eingetragen wird:
(Quelle: Scripting Guys und ein paar Extrazeilen)
On Error Resume Next Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = "SELECT name, distinguishedName FROM 'LDAP://OU=Schueler,OU=Benutzer,DC=MeineSchule,DC=at' WHERE objectCategory='user'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF 'Wscript.Echo objRecordSet.Fields("distinguishedName").Value Wscript.Echo objRecordSet.Fields("Name").Value Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value) objUser.Put "mail", objRecordSet.Fields("Name").Value & "@meineDomain.at" objUser.SetInfo objRecordSet.MoveNext Loop
Verwendung:
Auf einen DomänenController als “Emailer.vbs” speichern und die Einträge an die eigene Domäne anpassen!
(Zeile 11 und Zeile 24)
Abschließend in einer Command-Shell mit
cscript Emailer.vbs
starten.
Die Benutzernamen schwirren dann über den Bildschirm – und nach wenigen Sekunden haben alle Benutzer den gewünschten Eintrag im Feld E-Mail im AD. Nach der nächsten Synchronisierung dann auch in Office 365.
In Office 365 bleiben weiterhin beide zu Beginn genannten Mailadressen erhalten, auch am Loginnamen ändert dies nichts! Lediglich der Eintrag für den Primary SMTP-Server (=Absendeadresse) wird geändert.