richietheprogrammer Posted December 12, 2012 Share Posted December 12, 2012 Hey all, Been doing some work with AD. I am able to return specific info given a username. However, I want the input to accept a format of "LastName,FirstName", search AD for a match and return the username. Is this possible? Thank you very much for any help! Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 Check my AD UDF (for download please see my signature). The example script _AD_GetObjectsInOU.au3 uses ANR (Ambigous Name Resolution) in example 3.ANR searches the following properties:GivenNameSurnamedisplayNameLegacyExchangeDNmsExchMailNicknameRDNphysicalDeliveryOfficeNameproxyAddresssAMAccountName My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 Thank you for the reply and for your hard work. I cant get it to work though, what am I doing wrong? Global $sGivenName = _AD_GetObjectAttribute(@UserName, "Surname") $aObjects = _AD_GetObjectsInOU("", "(ANR=" & $sGivenName & ")", 2, "sAMAccountName,distinguishedName,displayname", "displayname") If @error > 0 Then MsgBox(64, "Active Directory Functions - Example 3", "No objects found") Else _ArrayDisplay($aObjects, "Active Directory Functions - Example 3 - Ambigous Name Resolution. Search for '" & $sGivenName & "'") EndIf this is not returning any results. Thanks again! Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 The call to _AD_Open is missing. You first call _AD_Open to connect to AD, then run your functions and at the end call _AD_Close to drop the connection to AD and release all objects. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
BrewManNH Posted December 12, 2012 Share Posted December 12, 2012 Is your username your last name only? Did you include an _AD_Open command in the script, I don't see one so I have to ask. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 Thank you for your reply. I just included the whole AD_GetObjectsInOU instead of using _AD_Open. I need to have it accept a variable formatted as LastName,FirstName and retreive the username for that user. The usernames are not based on the names consistently as they have to match a certain length so Smith,John might be Smitj. Ideas? Thanks again!! Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 Could you please run the example script _AD_GetObjectProperties.au3? Example one returns all properties for the current user. Please tell me which fields you need to search and I can provide the proper LDAP query. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 When I ran the first example, it returned mylastname,myfirstname in Col2 and my username in Col0. What I need to do is be able to input the information shown here in Col 2 and I want the script to return the corresponding username (which is shown now in Col0). I want the script to work given somebody else's Last,First name instead of mine. Somebody else on the network. Am I making any sense? Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 My bad, I didn't describe properly what I need. Col0 contains the propery names. Col1 contains the value of this property. I need you to scan Col1 until you find one or more properties which contain the Firstname and/or Lastname. Then you move to Col0 and send me the name of this properties. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 Assuming my name is John Smith. Col 0 returns: Smithj Col 1 returns: CN=Smith, John,OU=USA,OU=California,OU=Company,OU=Domain Users,DC=us,DC=abc So the property CN contains both the first and the last name. So I need to be able to input CN (as Smith,John) and have it return the Col0 value. Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 In your example Col0 is "distinguishedname", right? Again: Col0 holds the NAME of the property, Col1 holds the VALUE of the property. Can you tell me the value of property "cn" (Col0)? Is it "Smith, John" or "Smith, John"? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 Col0 is returning exactly "Smithj", my actual username. It's not returning the name of the property. It is returning the value of the property.. weird? Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 Weird! Can you please post a screenshot of the output? Mine looks like this: My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 Ahhh okay. Well I tried simplifying the process a little. When I compile and run your script, "AD_GetObjectsInOU" without touching it, Examples 1 and 2 return "No OUs could be found". Example 3 is the only one that shows an _ArrayDisplay with the results I posted earlier. Any ideas why the first 2 examples return an error? Appreciate all your help here! Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 We are not that far at the moment.First you need to run _AD_GetObjectProperties.au3 as I suggested in post #7. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 (edited) I apologize it's been a long day. Running GetObjectProperties example 1, to answer your question, cn (in col0) looks perfect as the value (in col1) has Lastname,firstname. So I need to input that and I want the script to return the username which shows up as the propertyname "mailNickname" in Col0. Are we on the same page now? Sorry again! Edited December 12, 2012 by richietheprogrammer Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 (edited) This script should give you the username. I return property "samaccountname" because this is the name of the user account in AD. #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y #include <AD.au3> ; Open Connection to the Active Directory _AD_Open() If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended) Global $aObjects[1][1] Global $sOU = "", $sSearch = "Smith, John" $aObjects = _AD_GetObjectsInOU($sOU, "(&(objectcategory=person)(objectclass=user)(displayname=" & $sSearch & "))", 2, "displayname,sAMAccountName,distinguishedName") If @error > 0 Then MsgBox(64, "Active Directory Functions - Example 1", "No users could be found") Else _ArrayDisplay($aObjects, "Active Directory Functions") EndIf _AD_Close() Edited December 12, 2012 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 You,sir,are awesome! One last thing. Right now $sSearch accepts Lastname,"space"+Firstname. The input will be in the format Lastname,Firstname without a space. Any idea on how to escape that properly? Link to comment Share on other sites More sharing options...
water Posted December 12, 2012 Share Posted December 12, 2012 This version should do the trick. As the script has no error checking it will crash if there is no "," in the input. #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y #include <AD.au3> ; Open Connection to the Active Directory _AD_Open() If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended) Global $aObjects[1][1] Global $sOU = "", $sSearch, $sInput, $aTemp $sInput = "Smith,John" $aTemp = StringSplit($sInput, ",") $sSearch = StringStripWS($aTemp[1], 3) & ", " & StringStripWS($aTemp[2], 3) $aObjects = _AD_GetObjectsInOU($sOU, "(&(objectcategory=person)(objectclass=user)(displayname=" & $sSearch & "))", 2, "displayname,sAMAccountName,distinguishedName") If @error > 0 Then MsgBox(64, "Active Directory Functions - Example 1", "No users could be found") Else _ArrayDisplay($aObjects, "Active Directory Functions") EndIf _AD_Close() My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki Link to comment Share on other sites More sharing options...
richietheprogrammer Posted December 12, 2012 Author Share Posted December 12, 2012 Works great. Thank you very much!! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now