Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X
X


Photo

Active Directory UDF


  • Please log in to reply
1237 replies to this topic

#1 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 01 December 2009 - 08:30 AM

*
POPULAR

I have converted and extended the adfunctions.au3 written by Jonathan Clelland to a full AutoIt UDF including help file, examples, ScITE integration etc.
The example scripts should run fine without changes.

2014-07-21: Version: 1.4.1.1 (bug fixes)
As always: Please test before using in production!
Needs to be run with AutoIt 3.3.10.2 or later!
 
KNOWN BUGS: (Last changed: )

Spoiler

Attached File  AD 1.4.1.1.zip   297.08KB   1887 downloads For AutoIt >= 3.3.10.2
Attached File  AD 1.4.0.0.zip   296.84KB   1855 downloads For AutoIt <= 3.3.8.1
Attached File  History.txt   51.95KB   662 downloads


Edited by water, 26 July 2014 - 05:00 PM.

  • UEZ, crumpuppet, JoseArmendariz and 7 others like this
UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki







#2 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 04 December 2009 - 11:55 AM

I've finished to implement the read-only functions (see previous post).
Before I start with the write-functions I need a volunteer to help me test this functions as I don't have write access to an Active Directory.
UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#3 rogerd2u

rogerd2u

    Wayfarer

  • Active Members
  • Pip
  • 72 posts

Posted 04 December 2009 - 06:42 PM

Just wanted to say that you've done an awesome job thus far!!! I look forward to using this UDF!!!


I'm converting Jonathan Clelland adfunctions.au3 to a full AutoiIt UDF including help file, examples, ScITE integration etc.
In a first step the readonly functions will be converted.
In a second step all other functions will follow.


Roger O."When people show you who they are, believe them.” --Mark Twain

#4 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 08 December 2009 - 01:48 PM

Anyone willing to run the example scripts and report errors/problems?
UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#5 FractalReactor

FractalReactor

    Seeker

  • New Members
  • 3 posts

Posted 12 December 2009 - 10:16 PM

hi,
Sorry for my bad English, I speak Spanish.
I can test functions. I have an AD, in which test some of the functions read-only of your library.

I leave my mail marianilucas@gmail.com

greetings

Edited by FractalReactor, 12 December 2009 - 10:18 PM.


#6 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 14 December 2009 - 07:48 AM

More then 50 downloads and still no error reports? ;)

Edited by water, 18 December 2009 - 08:51 AM.

UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#7 stamandster

stamandster

    Wayfarer

  • Active Members
  • Pip
  • 60 posts

Posted 18 December 2009 - 06:08 PM

More then 50 downloads and still no error reports? ;)

Working great Water! I'm currently using it in production.

I've adapted the example to my environment, it will check for FQDN group if you want but you can change it to general

Plain Text         
Func _AD_UserInGroup($ADusername,$ADGroupName,$FQDN = 0)     ; Open Connection to the Active Directory     local $founduser     _AD_Open()     ; Get an array of group names (FQDN) that the current user is immediately a member of     _AD_GetUserGroups($aUser, $ADusername)     IF $FQDN = 0 Then         $ADGroupName = "CN=" & $ADGroupName & ","     Endif         For $each in $aUser         IF StringinStr($each,$ADGroupName) Then             _AD_Close()             Return 1         Endif     Next     _AD_Close()         Return 0     EndFunc

Edited by kickarse, 18 December 2009 - 06:09 PM.


#8 someone

someone

    Reformed Mass Spammer!

  • Active Members
  • PipPipPipPipPipPip
  • 547 posts

Posted 18 December 2009 - 07:09 PM

@Water,

I'll do my best to check things out and test..I have access to an AD environment. If there is anything specific you want tested please let me know otherwise I'll just go through as best I can. Regardless though I want to say thanks for heading up this UDF project.... I used adfunctions.au3 pretty recently to make an easy add/remove groups interface for myself.
While ProcessExists('Andrews bad day.exe')     BlockInput(1)     SoundPlay('Music.wav')     SoundSetWaveVolume('Louder') WEnd

#9 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 20 December 2009 - 01:06 PM

Working great Water! I'm currently using it in production.

I've adapted the example to my environment, it will check for FQDN group if you want but you can change it to general

Hi kickarse,
I think the function you have written (test if a user is a member of a specific group) is already available as "_AD_IsMemberOf($sAD_Group, $sAD_User)"

Edited by water, 20 December 2009 - 01:57 PM.

UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#10 Yorn

Yorn

    Adventurer

  • Active Members
  • PipPip
  • 113 posts

Posted 22 December 2009 - 02:38 PM

water,
Thank you very much for working on this. I'm going to have to revise/revisit most of my scripts because of what you're doing, but it'll be well worth it. I'm very thankful for Johnny having made the original as well! This is probably my most-used UDF.

#11 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 22 December 2009 - 02:52 PM

Glad to hear that it's of use for someone ;)
UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#12 Talder

Talder

    Seeker

  • Active Members
  • 16 posts

Posted 23 December 2009 - 11:12 AM

Hi,

First off all, great job and very useful UDF! ;)

For those who are interested on making connection to a domain controller from a pc that is not registered into any domain, i had to change one line
Local $oAD_RootDSE = ObjGet("LDAP://RootDSE")


into
Local $oAD_RootDSE = ObjGet("LDAP://" & $sAD_HostServerParam & "/RootDSE")


and i was able to connect and query the domain controller. (of course you have to provide all necessary parameters to _ad_open())

Without this change you get a COM error.

Bye,

Tim

#13 EndFunc

EndFunc

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 436 posts

Posted 23 December 2009 - 11:01 PM

I've been using the other adfuctions.au3 and I have to admit that there should have been examples because some of the functions were a little hard to get working.
I had trouble with several that I ended up just finding vbscripts and converting them to autoit. Example I could never get the list domains controllers to work with the one in that UDF, but I found a vbscript that did the same thing and converted it to autoit. I have also since made several other custom AD functions not included in the adfuntions. I would love to see this as an official UDF so that it shows up in Scite and in the help file with usage examples.
Thanks for taking this one as it has been needed for a long time.

Edited by EndFunc, 23 December 2009 - 11:02 PM.

EndFuncAutoIt is the shiznit. I love it.

#14 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 24 December 2009 - 11:56 AM

@EndFunc
If there are any functions you want to see in the UDF which are not yet implemented in adfunctions.au3 or AD.au3 please just drop me a note and I will do my very best.
UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#15 EndFunc

EndFunc

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 436 posts

Posted 03 January 2010 - 10:22 PM

@EndFunc
If there are any functions you want to see in the UDF which are not yet implemented in adfunctions.au3 or AD.au3 please just drop me a note and I will do my very best.


Well something that would be a awesome function is searchable usernames. Just like the find in ADUC. I can pull up info based on a username but if it isn't exact then you get the error. What would be nice is that if finds names that match or are close and give you a choice. I've been trying to look at that but so far no go.

This guy's site has some very good vbscripts for many things. I've used a few of them in AutoIt. Some were difficult to convert because of not knowning the AutoIt equivalent. Anyway check out this site. Lots of good stuff for functions. That's just for seaching stuff, he has much more code on his site for other things.

http://www.rlmueller.net/freecode6.htm

Edited by EndFunc, 03 January 2010 - 10:23 PM.

EndFuncAutoIt is the shiznit. I love it.

#16 EndFunc

EndFunc

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 436 posts

Posted 03 January 2010 - 10:39 PM

Known bugs:

  • _AD_Open: Still does not work when you connect from a PC that is no domain member. Is solved in the next version
  • _AD_ListRoleOwners: Gives "Object referenced outside a "With" statement." in some environments
  • _AD_ListSites: Gives a COM error in some environments
  • _AD_MoveObject: Wrong syntax. Will be changed in next version
  • _AD_EnablePasswordChange and _AD_DisablePasswordChange: Do not work at all. We investigate the situation - I think we will have to rewrite the code
[b]

These original functions in adfunctions.au3 work fine for me, so why not use it as it is, just updating the vars?
_ADEnablePasswordChange and _ADDisablePasswordChange

Edited by EndFunc, 03 January 2010 - 10:39 PM.

EndFuncAutoIt is the shiznit. I love it.

#17 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 04 January 2010 - 01:26 PM

Hi EndFunc,

thanks for your reply!

  • All readonly functions work fine in my environment (have only readonly access to an AD). The "known bugs" section lists some errors another user gets when he uses AD.au3 from a PC which is not a member of a domain.
  • I will have a look at the suggested site. Are there any functions you would like to see in AD.au3?
  • To search for a user name (full or partial) you can use something like: _AD_GetObjectsInOU($asUser, $sOU, "(&(objectCategory=user)(name="*water*))", 2, "department,cn,distinguishedName,sAMAccountName")
    This will return department, full name, FQDN and sAMAccountname for all users in the specified OU that have "water" somewhere in the field "name".
  • _ADEnablePasswordChange and _ADDisablePasswordChange: As I understand the ACEs have to be sorted (according to KB269159) to make sure they work in all situations. The following scripts give an example. Do they work for you?
    http://www.wisesoft.co.uk/scripts/vbscri...disable_user_cannot_change_password.aspx
    http://www.rlmueller.net/Cannot%20Change%20PW.htm
I hope I will soon release a new version.

Edited by water, 06 January 2010 - 12:40 PM.

UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#18 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 06 January 2010 - 12:59 PM

Hi EndFunc,

I did check out this site (http://www.rlmueller.net/freecode6.htm). Here are my findings:

  • Search for Common Name: Use _AD_GetObjectsInOU
  • Duplicate Display Names: _AD_GetObjectsInOU with sort parameter "displayname" and then check the resulting array
  • Enumerate DC's: I've modified _AD_ListDomainControllers and incorporated the code from this script
  • Enumerate Servers: Use _AD_GetObjectsInOU
  • Document Forest: Use multiple calls to _AD_GetObjectsInOU
  • Create User List: Use _AD_GetObjectsInOU
  • Move Old Computers: _AD_GetPasswordInfo, _AD_DisableObject and _AD_MoveObject
  • Computer Roles: Uses WMI which is outside the scope of the AD UDF
  • Inventory Computers: Use _AD_GetObjectsInOU and the Excel UDF
  • Document Organization: Not yet implemented in the AD UDF. Will be implemented if enough users have a need for it
  • Unique Computer SIDs: Uses WINNT:// which is outside the scope of the AD UDF
  • Local Admin Passwords: Uses WINNT:// which is outside the scope of the AD UDF
  • Generic ADO Searches: Use _AD_GetObjectsInOU
If there are any functions you would like to see in the AD UDF please drop me a note.

Edited by water, 06 January 2010 - 12:59 PM.

UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

#19 bavery

bavery

    Seeker

  • New Members
  • 1 posts

Posted 25 January 2010 - 04:15 PM

First off, great work. Your AD functions are fantastic.

I have a bug/issue to report:

I noticed when I installed version 3.3.4.0 of AutoIt the _AD_IsMemberOf() function no longer works (i was using ad.au3 v0.33). It simply returns a -1. I rolled back to 3.3.0.0 and everything works fine. However, other functions such as _AD_GetUserGroups work with the new version. I also tried the original adfunctions.au3 file, and it also returns -1.

#20 water

water

    ?

  • MVPs
  • 15,774 posts

Posted 26 January 2010 - 07:53 AM

Hi,
I think we got hit by bug #1068: Binary to Int. This was fixed in 3.3.2.0
I was always wondering why the function returned a negative value because IsMember only returns 0x0 or 0x1.
I changed the code to return an absolute value so the function returns a valid result for every AutoIt version.
UDFs:
Active Directory (NEW 2014-07-21 - Version 1.4.1.1) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2014-07-27 - Version 1.0.0.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2013-01-21 - Version 0.3.1.1) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users