Es kann vorkommen, dass in historisch gewachsenen Domänen einzelne (oder alle) User Einträge im AD-Attribut “ProxyAddresses” haben, die auf einen alten Exchange / Gmail / etc hinweisen.
Dies ist äußerst hinderlich, wenn man diese Benutzer per Azure AD Connect ins OFFICE 365 übertragen möchte, da dieser Eintrag dazu führt, dass Benutzer kein Outlook-Konto in OFFICE365 bekommen.
Die Fehlermeldung lautet dann:
Benutzername xyz@domain.at E-Mail-Adresse Aliase Anzeigen nicht möglich. Versuchen Sie es noch mal.Die Lösung ist es nun, die Einträge im Attribut “ProxyAddresses” zu entfernen, was folgendes Script massenhaft erledigen kann:
(als MassenAttributlöscher.vbs speichern und direkt am Domänencontroller ausführen)
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Const ADS_PROPERTY_APPEND = 3
Const ADS_PROPERTY_DELETE = 4
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, sAmAccountname, proxyaddresses FROM 'LDAP://OU=lehrer,OU=Benutzer,DC=gymnasium,DC=at' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
'Wscript.Echo objRecordSet.Fields("distinguishedName").Value
if NOT objRecordSet.Fields("proxyaddresses").Value = NULL THEN
Wscript.Echo objRecordSet.Fields("sAmAccountname").Value & " -- " & objRecordSet.Fields("Name").Value
'# falls man das Script nur für einen User testen möchte: (ACHTUNG: zweites END IF unten einkommentieren)
'if objRecordSet.Fields("name").Value = "DRE" then
'Wscript.Echo objRecordSet.Fields("name").Value
arrProxyAddresses = objRecordSet.Fields("proxyAddresses").Value
Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)
'### zum Löschen aller Einträge in ProxyAddresses folgendes einkommentieren:
For Each objItem In arrProxyAddresses
objUser.PutEx ADS_PROPERTY_DELETE, "proxyAddresses", Array(objItem)
objUser.SetInfo
Next
'### zum Einfügen einer zusätzlichen Adresse folgendes einkommentieren:
' objUser.PutEx ADS_PROPERTY_APPEND, "proxyAddresses", Array("smtp:" & objRecordSet.Fields("sAmAccountname").Value & "@brg-mattersburg.at" )
'objUser.SetInfo
'### zum Auflisten aller Einträge in ProxyAddresses folgendes einkommentieren:
For x=0 to UBOUND(arrProxyAddresses)
wscript.echo arrProxyAddresses(x)
Next
wscript.Echo "erfolgreiche gelöscht!" & vbcrlf
end if
'end if
objRecordSet.MoveNext
Loop

