Problem:
Die Benutzername in Office 365 – insbesonders der Teil hinter dem @ (also der Domänenname) ist nach der synchronisierung nicht wie gewünscht!
NICHT
Benutzername@wunschdomain.at
SONDERN
Benutzername@MeineFirma.onmicrosoft.com
Ursache:
Als Benutzername wird der UPN (der in Active Directory Benutzer und Computer –> rechte Maustaste auf User –> Eigenschaften –> Attribut-Editor –> User Principle Name angezeigt wird) verwendet. Falls sich dieser (bzw. der Domain-Teil) von der in Office365 registrierten Domäne unterscheidet, dann wird stattdessen @MeineFirma.onmicrosoft.com verwendet.
Lösung:
- 1.) Active Directory-Domänen und -Vertrauensstellungen -> Rechte Maustaste -> Domäne hinzufügen

- Den UPN-Suffix für alle User einer OU ändern:
Alle User markieren -> Eigenschaften ->
Nach der nächsten Synchronisierung sind die Benutzernamen in der Weboberfläche richtig, und damit können sich die Benutzer dann auch mit dem von uns erwünschten UPN einloggen
Abschließend ein VBScript, das massenhaft im Bulk für alle User einer OU und UnterOU die Einträge für den “Benutzer-PrinzipalsNamen-Suffix” aka UserPrincipalName vornimmt:
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 userPrincipalName, 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("userPrincipalName").Value
Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)
objUser.Put "userPrincipalName", objRecordSet.Fields("Name").Value & "@meine-schule.at"
objUser.SetInfo
'wscript.Echo "done"
objRecordSet.MoveNext
Loop
Verwendung:
Zeile 11 und 25 an die eigene Umgebung anpassen!
Als “userUpdater.vbs” am DomänenController speichern und in einer Command-Shell mit
cscript userUpdater.vbs
starten.

Damit ist übrigens der erste Schritt zu Single Sign On gemacht: https://ictschule.com/2017/02/22/office-365-single-sign-on/. Danach müssen die Benutzer beim Office 365 Portal nur noch den Benutzernamen eintragen, das entsprechende Passwort wird automatisch übermittelt.