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]

Reply via email to