?
Solved

LDAP Query of manager and update manager

Posted on 2008-10-24
3
Medium Priority
?
2,160 Views
Last Modified: 2013-12-24
I'm on a quest to update an employee's supervisor in AD.

I've got the part where we're querying the user's manager all set. But as soon as I query the adspath of the manager to put that into the user's manager field in their AD record, I get an error 80005008 at Line 49 which is:
            if usrmgr <> "" then usr.put "manager", usrmgr
Any ideas why this would be happening?

Thanks
Call Run_SetManager
 
Function Run_SetManager
 
set conn = CreateObject("ADODB.Connection")
set rsExch = CreateObject("ADODB.Recordset")
set rsADUsr = CreateObject("ADODB.Recordset")
set rsADMGR = CreateObject("ADODB.Recordset")
Set oCmd = CreateObject("ADODB.Command")
Set oCmd1 = CreateObject("ADODB.Command")
 
conn.Open "Data Source=Active Directory Provider;Provider=ADsDSOObject"
 
uname = inputbox("Enter the FULL NAME of the user to modify:", "Enter Username")
 
If uname = "exit" Or uname = "" Or uname = "Exit" Then 
Exit Function 
End If 
 
if uname <> "" then
	strADOQuery = "SELECT adspath, manager, title from 'LDAP://pathtodomain'' WHERE objectCategory='person' AND objectClass='user' AND name = '" & uname & "'"
	oCmd.ActiveConnection = conn
	oCmd.Properties("SearchScope") = 2
	oCmd.CommandText = strADOQuery
		
	set rsADUsr = oCmd.Execute
	if rsADUsr.RecordCount = 0 then msgbox "Username not found."
	if rsADUsr.RecordCount > 1 then msgbox "Multiple names found. This script can't help you."
	if rsADUsr.RecordCount = 1 then
		set usr = GetObject(rsADUsr.Fields("ADsPath"))
		if isnull(rsADUsr.Fields("manager")) = true then current = ""		
		if isnull(rsADUsr.Fields("manager")) = false then current = rsADUsr.Fields("manager")
		URL = inputbox("DO NOT PRESS CANCEL. PRESSING CANCEL WILL ERASE THIS ATTRIBUTE." & vbcrlf & vbcrlf & "Change Manager for " & uname & " to:", "Change Manager")
				strADOQueryMGR = "SELECT adspath from 'LDAP://pathtodc' WHERE objectCategory='person' AND objectClass='user' AND name = '" & URL & "'"
				oCmd1.ActiveConnection = conn
				oCmd1.Properties("SearchScope") = 2
				oCmd1.CommandText = strADOQueryMGR
					
				set rsADMGR = oCmd1.Execute
				if rsADMGR.RecordCount = 0 then msgbox "Manager not found."
				if rsADMGR.RecordCount > 1 then msgbox "Multiple managers found. This script can't help you."
				if rsADMGR.RecordCount = 1 Then 
					set usrmgr = rsADMGR.Fields("adspath")
				end if
 
		if usrmgr <> "" then usr.put "manager", usrmgr
		if usrmgr = "" then usr.Putex 1, "manager", ""
		usr.SetInfo
		msgbox "Manager Update Successful"
		set usr = nothing
	end if
end If
 
 
 
conn.close
set ocmd = nothing
set ocmd1 = nothing
set rsExch = nothing
set rsADUsr = Nothing
set rsADMGR = nothing
set conn = nothing
 
End Function

Open in new window

0
Comment
Question by:ksb-sys
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 71

Accepted Solution

by:
Chris Dent earned 500 total points
ID: 22802579

Hey :)

Add distinguishedName into here:

>         strADOQuery = "SELECT adspath, manager, title from 'LDAP://pathtodomain''
> WHERE objectCategory='person' AND objectClass='user' AND name = '" & uname & "'"

e.g.

strADOQuery = "SELECT adspath, manager, title, distinguishedName from 'LDAP://pathtodomain' " &_
  "WHERE objectCategory='person' AND objectClass='user' AND name = '" & uname & "'"

Then change this:

> set usrmgr = rsADMGR.Fields("adspath")

To:

usrmgr = rsADMGR.Fields("distinguishedName")

ADSPath includes LDAP:// which isn't valid for the manager field. Set is unnecessary as it's just a string value, not an object.

HTH

Chris
0
 

Author Comment

by:ksb-sys
ID: 22813269
Perfect! Thank yoU!!!
0
 
LVL 71

Expert Comment

by:Chris Dent
ID: 22813288

You're welcome :)

Chris
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This post looks at MongoDB and MySQL, and covers high-level MongoDB strengths, weaknesses, features, and uses from the perspective of an SQL user.
In this article, I’ll look at how you can use a backup to start a secondary instance for MongoDB.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …

764 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question