Avatar of Mark Pavlak
Mark Pavlak
Flag for United States of America asked on

Trouble reading Multi Valued Attributes from AD using VBS

I am currently working on a script which helps read particular AD account info and builds into a spread sheet.  One of the attributes I am trying to read is the protocolsettings attribute.  I know how to decode the results; however when multiple values exist ie

HTTP§0§1§§§§§§
POP3§0§1§4§ISO-8859-1§0§§§
IMAP4§0§1§4§ISO-8859-1§0§1§0§0

I only can get the 1st in the list.  How would I access the second and third.

I am using some the sub below.  note the objuser.protoclSettings call, when this is ran I would only get
HTTP§0§1§§§§§§ as the result I cannot grab the other two.

Sub ProcessOU (strOU)
Dim strNewOU,strObjectLocation
' Section to bind to ANY Active Directory.
Set objRoot = GetObject("LDAP://rootDSE")
Set ObjContainer = GetObject( strOU& _
objRoot.Get("defaultNamingContext")) 
 
For Each objUser In ObjContainer
	If objUser.class ="user" then
		objExcel.Cells(intRow,1)  = objUser.givenName
		objExcel.Cells(intRow,2)  = objUser.sn
		objExcel.Cells(intRow,3)  = objUser.description
		objExcel.Cells(intRow,4)  = objUser.physicalDeliveryOfficeName
		objExcel.Cells(intRow,5)  = objuser.company
		objExcel.Cells(intRow,6)  = objuser.telephonenumber
		objExcel.Cells(intRow,7)  = objuser.title
		objExcel.Cells(intRow,8)  = objuser.mobile
		objExcel.Cells(intRow,9)  = objuser.ipPhone
		objExcel.Cells (intRow,10)= objuser.protocolSettings
		If objuser.msNPAllowDialin = "True" Then
		objExcel.Cells(intRow,14) = "Allow Access"
		Else 
		objExcel.Cells(intRow,14) = "Controll Access through RAS Policy"
		End If
intRow = intRow + 1
Else If objuser.Class = "organizationalUnit" Then
		'Wscript.Echo objUser.Name&" Is an OU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
		'WScript.Echo objUser.distinguishedName &"is the DN"
		strNewOU = Replace(objUser.distinguishedName,",DC=ELIZABETH",",")
		ProcessOU ("LDAP://"&strNewOU)
	End If
	End If
	
Next
End Sub

Open in new window

Visual Basic ClassicVB ScriptNetworking

Avatar of undefined
Last Comment
RobSampson

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
RobSampson

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Mark Pavlak

ASKER
Thank you! I have a couple of questions though and one correction on your code.  I like to fully understand thing so could you explain line 20 to me.  This is also where I needed to make the correction though.  it should read

objSettings = objUser.GetEx("protocolSettings") inorder for the For statement to function properly.  But my question is what is the .GetEx method mean.  I understand what it is doing but I am looking more for its definition.
RobSampson

Hi, you're right about objSettings....good spotting....that was a cut and paste error, and I didn't get a chance to test it.

The GetEx method documentation can be found here:
http://msdn.microsoft.com/en-us/library/aa746348(VS.85).aspx

Basically, this method makes sure that the correct data type is returned whether there are none, one, or multiple values in the multi-valued attribute, without returning an error, as direct access would if it didn't exist.

It returns a data type (determined by TypeName(objSettings)) of Empty, String, or Array.

Regards,

Rob.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck