Link to home
Create AccountLog in
Visual Basic Classic

Visual Basic Classic

--

Questions

--

Followers

Top Experts

Avatar of Mark Pavlak
Mark Pavlak🇺🇸

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

Zero AI Policy

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


ASKER CERTIFIED SOLUTION
Avatar of RobSampsonRobSampson🇦🇺

Link to home
membership
Log in or create a free account to see answer.
Signing up is free and takes 30 seconds. No credit card required.
Create Account

Avatar of Mark PavlakMark 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.

Avatar of RobSampsonRobSampson🇦🇺

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.

Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.

Visual Basic Classic

Visual Basic Classic

--

Questions

--

Followers

Top Experts

Visual Basic is Microsoft’s event-driven programming language and integrated development environment (IDE) for its Component Object Model (COM) programming model. It is relatively easy to learn and use because of its graphical development features and BASIC heritage. It has been replaced with VB.NET, and is very similar to VBA (Visual Basic for Applications), the programming language for the Microsoft Office product line.