|
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
' -------------------------------------------------------------------------
|
|