It's pretty obvious from his description that it's Exchange 2000.

I use ADSI for these things.  The proxyAddresses attribute is an array.
Code I've written manipulates the entries in the array.  Be sure not to
put the same address in twice--ADSI doesn't like that and you'll get the
typical useless error message.

Ed Crowley MCSE+Internet MVP
Freelance E-Mail Philosopher
Protecting the world from PSTs and Bricked Backups!T


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Tony Hlabse
Sent: Tuesday, March 25, 2003 3:36 AM
To: Exchange Discussions
Subject: RE: Change the primary SMTP address using VBscript


Which version of Exchange.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Veld, Paul 
Sent: Tuesday, March 25, 2003 1:38 AM
To: Exchange Discussions

Has anyone tried to use a VBscript to change the primary SMTP address
for a number of users?

We are in the process of a demerger.  During the transition process, all
the users in the new company need to have some additional SMTP
addresses. After a certain date, the primary SMTP address needs to be
changed from the existing Company1 address to the new Company2 address.
I have tried to do this in a script, but it doesn't do what I want.  The
script basically goes through a particular OU ( containing all the user
accounts which are migrating to the new company ), extracts the proxy
addresses for each user into an array, then reads through the array and
modifies the appropriate values.  It then writes the array back to the
user object and loops back to the next user.  It runs with no error, but
when I look at the user's properties, the primary SMTP address has not
been changed.

Has anyone done this before??  Can anyone see what I'm doing wrong??  As
you can probably see from the code, I'm not a scripting guru.  I have
googled and looked at as many sample scripts ( MSDN, Script Center etc )
as I could find, but I wasn't able to find any code specifically about
changing the primary SMTP address.

Any assistance gratefully accepted.

Code extract follows ..............

'
------------------------------------------------------------------------
-
Option Explicit

Dim objDSE, strDefaultDN, strDN, objContainer, objChild
Dim ObjUser, arrProxy, strProxy, strValue, arrayValues(3)
Dim strEmail, strEmail1, strEmail2, strEmail3, strEmail4
Dim fso, outputfile, i, strAlias, strMail

Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const ADS_PROPERTY_UPDATE = 2
Const ADS_PROPERTY_APPEND = 3

On Error Resume Next

' Bind to rootDSE and establish the connection to the OU
Set objDSE = GetObject("LDAP://rootDSE";)
strDefaultDN = "OU=Test," & objDSE.Get("defaultNamingContext")
Set objContainer = GetObject("LDAP://"; & strDefaultDN)

objContainer.Filter = Array("user")     ' only want to process user
objects

i = 0
strEmail = ""

For Each objChild In objContainer       ' loop through users in OU
        Wscript.echo " "
        WScript.Echo objChild.Name & vbTab & objChild.Description &
vbTab & objChild.distinguishedname
        Wscript.echo " "
        set objUser = GetObject("LDAP://"; & objChild.distinguishedname)
' bind to user object
        arrProxy = objUser.GetEx("proxyAddresses")      ' load proxy
addresses into an array

        i = 0
        strEmail = ""

        If err.number = E_ADS_PROPERTY_NOT_FOUND Then   ' if the
property is
not found, display message
                Wscript.echo "No proxy addresses - property not found"
                err.clear
        Else
                If isEmpty(arrProxy) Then               ' if no proxy
addresses, display message
                        Wscript.echo "No proxy addresses - empty array"
                Else
                        wscript.echo (ubound(arrProxy)+1) & "  proxy
addresses found"
                        dim arrNewproxy()
                        For i = 0 To Ubound ( arrProxy ) ' loop through
proxy addresses
                                strProxy = arrProxy(i)
                                'Wscript.echo "old " & i & " strProxy:
" &
strProxy
                                If ( InStr ( strProxy, "SMTP:" ) > 0 )
Then
' is this the primary SMTP address?
                                        strProxy = Lcase(strProxy)
                                End If
                                If ( InStr ( strProxy, "bogus1" ) > 0 )
Then
' is this the new primary SMTP address?
                                        strProxy = Replace(strProxy,
"smtp",
"SMTP")
                                End If
                        arrNewproxy(i) = strProxy
                        'Wscript.echo "new " & i & " strProxy:  " &
strProxy
                        Next ' i
                        objUser.PutEx ADS_PROPERTY_UPDATE,
"msExchPoliciesExcluded",
Array("{26491CFC-9E50-4857-861B-0CB8DF22B5D7}")
' clear the -use recipient policies- field
                        objUser.PutEx ADS_PROPERTY_UPDATE,
"proxyAddresses",
Array(arrNewproxy)
                        objUser.SetInfo
' apply the changes we have made to the object
                        set objUser = Nothing
' release the user object binding
                End If
        End If
Next

_________________________________________________________________
List posting FAQ:       http://www.swinc.com/resource/exch_faq.htm
Archives:               http://www.swynk.com/sitesearch/search.asp
To unsubscribe:         mailto:[EMAIL PROTECTED]
Exchange List admin:    [EMAIL PROTECTED]

_________________________________________________________________
List posting FAQ:       http://www.swinc.com/resource/exch_faq.htm
Archives:               http://www.swynk.com/sitesearch/search.asp
To unsubscribe:         mailto:[EMAIL PROTECTED]
Exchange List admin:    [EMAIL PROTECTED]


_________________________________________________________________
List posting FAQ:       http://www.swinc.com/resource/exch_faq.htm
Archives:               http://www.swynk.com/sitesearch/search.asp
To unsubscribe:         mailto:[EMAIL PROTECTED]
Exchange List admin:    [EMAIL PROTECTED]

Reply via email to