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.