Setting targetaddress with vbscript for Exchange 2003
This blog describes how to set the target address attribut via a vb script in an Exchange 2003 organization.
First of all an Input file is needed to read the userlist. Targetaddress.csv is the file name used in the script below. The following two entries are the only attributes which are used.
LegacyExchangeDN,mail.. From the mail attribut value everything is stripped of after the @ and replaced with ex2010.de then this string is put into targetaddress with the SMTP:name@ex2010.de.
A log file is also created in the directory where the script is called. The filename of the log file is logging_set_targetaddress.txt
First the script reads the Input file targetaddress.csv. Then it tries to find the user with the E-Mail address of the value "mail".
In case the result is not equal 1 the script will do nothing and will write an error in the log file.
--------------------------------------------------------------------------------------------------------
Please note that this script is just an example script and needs to be adapted
------------------- ------------------------------------------------------------------------------------
------------------- Start of script ----------------------------------------------------------------------
Option Explicit
Const ForWriting = 2, ForAppending = 8, ForReading = 1
Const CreateIfNotExist = True
Const DoNotCreate = False
Dim FSO, file, Benutzer
Dim TextZeile, data
Dim rootDSE
Dim conn, Email, LDAPStr, Mystring, vpathfichout, strDomain, objCommand
Dim oPerson, domainname, objRoot, username, cn, cmd, rs, strXSMTPContainer, strX500Container, strAddrPrefix, strSMTPPrefix, pre, dummy,dummy1
vpathfichout = "logging_set_targetaddress.txt"
WritetoFile vpathfichout, " Skript gestartet am: " & Date() & " " & Time()
Set FSO=CreateObject("Scripting.FileSystemObject")
Set file = FSO.OpenTextFile("targetaddress.csv", ForReading, False)
strSMTPPrefix ="SMTP:"
if domainname = "" then
set objRoot = getobject("LDAP://RootDSE")
domainname = objRoot.get("defaultNamingContext")
end if
TextZeile=file.Readline() ' Einlesen der Headerzeile
while not file.AtEndOfStream
TextZeile=file.Readline()
If IsNull(TextZeile) Then
WScript.Quit
End If
Benutzer=Split(TextZeile,",")
'wscript.echo Benutzer(0) & ";" & Benutzer(1)
username = Benutzer(1)
If username <> "" then
wscript.echo finduser (username,domainname)
End if
wend
file.Close
WritetoFile vpathfichout, " Skript beendet am: " & Date() & " " & Time()
Function FindUser(Byval UserName, Byval Domain)
set cn = createobject("ADODB.Connection")
set cmd = createobject("ADODB.Command")
set rs = createobject("ADODB.Recordset")
cn.open "Provider=ADsDSOObject;"
cmd.activeconnection=cn
cmd.commandtext="SELECT ADsPath FROM 'LDAP://" & Domain & _
"' WHERE mail = '" & UserName & "'"
set rs = cmd.execute
if err<>0 then
FindUser="Error connecting to Active Directory Database:" & err.Description
WritetoFile vpathfichout, "Error connecting to Active Directory Database:" & err.Description
else
if not rs.BOF and not rs.EOF then
Set oPerson = GetObject(rs.Fields(0).Value)
strXSMTPContainer= Benutzer(1)
dummy1= Split(strXSMTPContainer,"@",-1,1)
dummy = dummy1(0) & "@ex2010.de"
wscript.echo "Routingadresse: " & dummy
oPerson.PutEx 3, "targetAddress", Array(strSMTPPrefix & dummy)
oPerson.SetInfo
wscript.echo err.number & err.description
'wscript.echo "Hinzufügen von targetaddress : " & strSMTPPrefix & strXSMTPContainer
WritetoFile vpathfichout, "Hinzufügen von " & strSMTPPrefix & " " & strXSMTPContainer
strXSMTPContainer =""
rs.MoveFirst
FindUser = rs(0)
else
FindUser = Benutzer(1) & " Nicht gefunden"
WritetoFile vpathfichout, Benutzer(1) & " Nicht gefunden"
end if
end if
cn.close
end Function
Sub WritetoFile (FilePathName, Data)
Dim Log
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
Set Log = fs.OpenTextFile(FilePathName, ForAppending, CreateIfNotExist)
Log.Writeline data
Log.Close
end Sub
------------------- End of script ----------------------------------------------------------------------
Save the script example as yourfilename.vbs
Start the script with the following command: cscript yourfilename.vbs