I'm running an AD query to pull selected attributes from a users profile. I'm selecting extensionAttribute3, 4, 5, 6, 7 & 8. Although I can get the result to display as text, I'd like to set the selected vlaue of a combobox to the results.
So extension attribute 3, 5 & 7 = security questions, 4, 6 & 8 are the answers. I have 3 comboboxes, each with a list of 15 possible security questions users can select from, and then provide answers to. I've got my script to update AD with the questions & answers selected. However when I run the application again, I'd like to pull the existing questions from extensionAttribute 3, 5 & 7, as set as the default selected foreach combobox.
Current AD Query Code:
Private Function GetUserProperties()
Dim ADName As String = GetLogonName()
Dim CurrentPIN As String = Nothing
Dim bSuccess As Boolean = False
Dim dirEntry As DirectoryEntry = GetDirectoryEntry()
Dim dirSearcher As DirectorySearcher = New DirectorySearcher(dirEntry)
Dim Q1Value As String = Nothing
dirSearcher.Filter = ("(samAccountName=" & ADName & ")")
dirSearcher.PropertiesToLoad.Add("extensionAttribute3")
dirSearcher.PropertiesToLoad.Add("extensionAttribute4")
dirSearcher.PropertiesToLoad.Add("extensionAttribute5")
dirSearcher.PropertiesToLoad.Add("extensionAttribute6")
dirSearcher.PropertiesToLoad.Add("extensionAttribute7")
dirSearcher.PropertiesToLoad.Add("extensionAttribute8")
dirSearcher.SearchScope = SearchScope.Subtree
Try
Dim dirResult As SearchResult = dirSearcher.FindOne()
bSuccess = Not (dirResult Is Nothing)
If dirResult Is Nothing OrElse dirResult.GetDirectoryEntry.Properties("extensionAttribute3").Value Is Nothing Then
Return "<not set>"
Else
Q1Value = dirResult.GetDirectoryEntry.Properties("extensionAttribute3").Value.ToString
Q1ComboBox.SelectedIndex = Q1Value
End If
Catch ex As Exception
bSuccess = False
MsgBox("No Connection to the domain." & Environment.NewLine & "Please connect to corporate network & try again.", MsgBoxStyle.Critical, "Network Error")
Application.Exit()
End Try
Return False
End Function
It's really hard to format code in comments, i put them here instead.
I'm not VB programmer, may have syntax error.
You don't provide code for extensionAttribute4-8, so it's hard to find what's wrong with them. Do you mean for extensionAttribute4-8, just repeating the if-else block inside the try-catch does not work?
For example, you cannot get value of extensionAttribute4 below?
For using the attribute already loaded in SearchResult, you already handle the conversion to string problem (mentioned in comment) by calling ToString. You can just do the same thing. But instead of checking
dirResult.GetDirectoryEntry.Properties("...").Value Is Nothing
, you should checkdirResult.Properties("...").Count > 0
.