Link to home
Create AccountLog in
Avatar of WNottsC
WNottsCFlag for Afghanistan

asked on

VBscript to Hide from exchange list

I have a vbscript that works perfectly well at disabling an account and removing all group membership apart from the Primary Group.

The subroutine is shown below.  If however I uncomment the two lines for hiding from the exchange list it comes up with an error code  -2147463153

would you be able to tell me what is wrong

'--------------------------------------------------------------------------------------------------
' This subroutine Disables users.
'--------------------------------------------------------------------------------------------------

Sub DisableUser
      
'*********************************************************************************
'  Disable the User Account
'*********************************************************************************

      objUser.AccountDisabled = True
      objUser.SetInfo

      On Error Resume next

      objUser.Put "msExchHideFromAddressLists", True
      objUser.SetInfo

      If Err.Number = 0 Then
            Report "User hidden successfully."
      Else
            Report Err.number
            Report Err.Desciption
            Report "Sorry something went wrong, check user name."
      End If

' Enumerate all direct group memberships (except the "primary" group).
For Each objGroup In objUser.Groups
' Remove the user from the group.
objGroup.Remove(objUser.AdsPath)
Next


End Sub
Avatar of WNottsC
WNottsC
Flag of Afghanistan image

ASKER

I have just changed:-

objUser.Put "msExchHideFromAddressLists", True

to

objUser.msExchHideFromAddressLists = True

and get the following error

438    Object doesn't support this property or method
Hi

The code mentioned by you for hiding works and no changes required.
objUser.Put "msExchHideFromAddressLists", True
objuser.setinfo

can you give err.clear at beginning of subroutine and try
Avatar of WNottsC

ASKER

I still get the -2147463153  error
Can you give the description of the error, can you also check if the hide value is being set to true.
Hi

Does the user whom you are trying to hide have exchange attributes, is the user mail enabled?
We cannot hide user if he is not mail enabled.

I had tested the script against mail enabled user and it worked fine, for non mail enabled user it threw -2147463153  error.

you could try this:
const ADS_PROPERTY_UPDATE = 2
objUser.PutEx ADS_PROPERTY_UPDATE, "msExchHideFromAddressLists", True
objUser.SetInfo

or maybe this
objUser.Get("msExchHideFromAddressLists")
objUser.Put "msExchHideFromAddressLists", True
Avatar of WNottsC

ASKER

this error does not bring back a description, it does have exchange attributes but with exchange 2007 you no longer have tabs on the AD user account for the exchange information.  Not sure if exchange 2007 is the reason this error is coming up.

Tried it again on a different account and it is still having the same issue. even using

objUser.Get("msExchHideFromAddressLists")
objUser.Put "msExchHideFromAddressLists", True
objUser.SetInfo



Avatar of WNottsC

ASKER

we are using this code for connecting to the object could this be the issue.  However it works for disabling the account and removing group membership just not the exchange list

Set objUser = GetObject("WinNT:// { NETBIOS Domain name } " & "/" & strstaffID)
Can you try to fetch the information and display the present value, using the objUser.Get("msExchHideFromAddressLists") to check the error it is throwing. Try to only get the value, not set the value.
Avatar of WNottsC

ASKER

this gives us a 2147463155 error
Avatar of WNottsC

ASKER

sorry and the description for that error is The directory property cannot be found in the cache
can you use adsiedit to check if the property exists for the user.
Avatar of WNottsC

ASKER

the property exists but it is <not set>
ASKER CERTIFIED SOLUTION
Avatar of prashanthd
prashanthd
Flag of India image

Link to home
membership
Create an account to see this answer
Signing up is free. No credit card required.
Create Account