AD-Attribut mailNickname nachträglich ändern

Das AD-Attribut mailNickname (auch Alias genannt) verhindert die Übernahme in das Globale Adressbuch, wenn sich darin Leerzeichen befinden.
Die Ausführung in der Powershell von :

Update-GlobalAddressList -identity "Globale Standardadressliste"

schlägt fehl. (hier natürlich eigenen Wert eintragen)
Das hier angeführte Script durchforstet die Kontakte und löscht die Leerzeichen.
So wird aus „Pitti Platsch“ dann „PittiPlatsch“.

changeNickname.vbs
 ' alle mailNickName der GAL-Kontakte so ändern,
 ' dass keine Leerzeichen mehr vorhanden sind
 
 Dim oUser,email, memberOf , buf , DisName , mailNickname, name , distinguishedName
 DIM arrmailNickname(),arrEmail(),arrName(),arrdistinguishedName(),arrNewmailNickname()
 i = 0
 j = 0
 
     i = Abfrage 
 
  for j = 0 to i - 1
      'wscript.echo arrdistinguishedName(j) & vbTab & arrmailNickname(j)   & vbTab & arrEmail(j) & vbTab & arrName(j)
       ReDim Preserve arrNewmailNickname(j)
       arrNewmailNickname(j) =   Replace(arrmailNickname(j)," ","")
       'wscript.echo  arrNewmailNickname(j)
       ChangeMailNickName arrdistinguishedName(j),arrNewmailNickname(j)
 
      j = j + 1
  next
 
' -------------------------------------------------------------------------
' Benutzerattribute gezielt mit ADO per SQL suchen
' -------------------------------------------------------------------------
Function Abfrage()
 
Dim objDSE, objConnection, objCommand, objRecordset, i , objDNC , cT , rstU
 
Set objDSE = GetObject("LDAP://rootDSE")
objDNC = objDSE.Get("defaultNamingContext")
Set objDSE = Nothing
' hier den eigenen FQDN eintragen:
cT = "SELECT mailnickname,mail,legacyExchangeDN,name,distinguishedName FROM 'LDAP://DC=my,DC=dom,DC=ain' WHERE objectclass = 'contact' AND mailNickname = '* *' "
 
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open
 
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection
 
objCommand.CommandText = cT
Set objRecordset = objCommand.Execute
 
If Not objRecordset.EOF Then
	While Not objRecordset.EOF
	   on error resume next
	   email =  objRecordset.Fields("mail")
           ReDim Preserve arrEmail(i)
           arrEmail(i) = email 
	   name =  objRecordset.Fields("name")
	   ReDim Preserve arrName(i)
           arrName(i) = name
        '	DisName = objRecordset.Fields("distinguishedName") 
	   mailNickname = objRecordset.Fields("mailNickname")
	   ReDim Preserve arrmailNickname(i)
           arrmailNickname(i) = mailNickname
           distinguishedName = objRecordset.Fields("distinguishedName")
           ReDim Preserve arrdistinguishedName(i)
           arrdistinguishedName(i) = distinguishedName
    '		memberOf = objRecordset.Fields("memberOf") 
   	i = i + 1
	'wscript.echo i & vbcrlf
	    objRecordset.MoveNext
	Wend
End if
 
objRecordset.Close
objConnection.Close
 Abfrage = i
End Function
 
'-------------------------------------------------------------------------
'mailNickName ändern 
'-------------------------------------------------------------------------
sub ChangeMailNickName(DisName,Target)
 
 Set oTargetOU = GetObject("LDAP://" & DisName)
 
 oTargetOU.Put "mailNickname", Target
 wscript.echo DisName & vbTab & Target
 oTargetOU.SetInfo
 set oTargetOU = Nothing
 
End Sub
' -------------------------------------------------------------------------