Sign in to follow this  
Followers 0
water

Active Directory UDF - Help & Support (II)

517 posts in this topic

As the Active Directory UDF - Help & Support thread has grown too big, I start a new one.

The original thread can be found


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites



Going back to the other thread questions, the UDF is UDF Version 1.3.0.0. Remeber that I had an issue with the IE error handler because I need to have both in my program. So you told me to add a couple lines. Would that be why the line count number is off?

When I used the old version of the UDF, it works fine (0.41)

Share this post


Link to post
Share on other sites

Can you please post the line where you call _AD_ObjectDelete including the content of all parameters you pass?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

I just have it like this. I set the $TheUser field with the username of the person I am trying to delete.

$iValue = _AD_DeleteObject($TheUser, "user")

Share this post


Link to post
Share on other sites

You have to set $TheUser to the SamAccountName (that's the ID you use for logon) or the FQDN like CN=UserId,OU=..DC=..,DC=..


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Ya, I am using SamAccountName -- The username of the person Im trying to delete.

Share this post


Link to post
Share on other sites

Can you please post the result of

ConsoleWrite(_AD_SamAccountNameToFQDN($TheUser))


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

shows the below

CN=LSTNAME, 1STNAME,OU=Users,OU=Supervisors,OU=OPERATIONS,OU=Location,DC=DOMAIN,DC=com

Had to a couple words that are in bold

Share this post


Link to post
Share on other sites

Looks like the escape character ("") causes the problem.

Will have to create a test script to further track this down.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Can you please run this modified version to delete the user so we get some additzional debugging info?

Func _AD_DeleteObjectEX($sAD_Object, $sAD_Class)

    If Not _AD_ObjectExists($sAD_Object) Then Return SetError(1, 0, 0)
    Local $sAD_CN
    If StringMid($sAD_Object, 3, 1) <> "=" Then $sAD_Object = _AD_SamAccountNameToFQDN($sAD_Object) ; sAMAccountName provided
ConsoleWrite("$sAD_Object: " & @error & "-" & $sAD_Object & @LF)
    Local $oAD_Object = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_Object)
ConsoleWrite("__AD_ObjGet $sAD_Object: " & @error & "-" & IsObj($oAD_Object) & @LF)
    Local $oAD_OU = __AD_ObjGet($oAD_Object.Parent) ; Get the object of the OU/CN where the object resides
ConsoleWrite("__AD_ObjGet $oAD_OU: " & @error & "-" & IsObj($oAD_OU) & @LF)
    If $sAD_Class = "organizationalUnit" Then
        $sAD_CN = "OU=" & _AD_GetObjectAttribute($sAD_Object, "ou")
    Else
        $sAD_CN = "CN=" & _AD_GetObjectAttribute($sAD_Object, "cn")
    EndIf
ConsoleWrite("_AD_GetObjectAttribute: " & @error & "-" & $sAD_CN & @LF)
    $oAD_OU.Delete($sAD_Class, $sAD_CN)
    If @error <> 0 Then Return SetError(@error, 0, 0)
    Return 1

EndFunc

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Good day.

did you read my last post about diagnostic results?

If the results show nothing could you help me with getting content of created object please?

I'm sure the origins of this error will be understood under results comparing.

Share this post


Link to post
Share on other sites

Hi tarankov,

Yes, I've read your last post. Unfortunately I'm quite busy at the moment and haven't yet found the time to dive into the subject.

I have no experience with AD permissions. Function _AD_CreateComputer is a complete copy of the original function written by Jonathan Clelland taken from his adfunctions UDF.

The original script was taken from here.

I'm not sure the whole permission thing is needed at all. Maybe if no permissions are set everyone can join the computer to the domain. So this should work too:

Func _AD_CreateComputer($sAD_OU, $sAD_Computer, $sAD_User)

    If Not _AD_ObjectExists($sAD_OU) Then Return SetError(1, 0, 0)
    If _AD_ObjectExists("CN=" & $sAD_Computer & "," & $sAD_OU) Then Return SetError(2, 0, 0)
    If Not _AD_ObjectExists($sAD_User) Then Return SetError(3, 0, 0)
    If StringMid($sAD_OU, 3, 1) <> "=" Then $sAD_OU = _AD_SamAccountNameToFQDN($sAD_OU) ; sAMACccountName provided
    If StringMid($sAD_User, 3, 1) = "=" Then $sAD_User = _AD_FQDNToSamAccountName($sAD_User) ; FQDN provided
    Local $oAD_Container = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_OU)
    Local $oAD_Computer = $oAD_Container.Create("Computer", "cn=" & $sAD_Computer)
    $oAD_Computer.Put("sAMAccountName", $sAD_Computer & "$")
    $oAD_Computer.Put("userAccountControl", BitOR($ADS_UF_PASSWD_NOTREQD, $ADS_UF_WORKSTATION_TRUST_ACCOUNT))
    $oAD_Computer.SetInfo
    If @error <> 0 Then Return SetError(@error, 0, 0)
    Return 1

EndFunc   ;==>_AD_CreateComputer

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#13 ·  Posted (edited)

Can you please run this modified version to delete the user so we get some additzional debugging info?

Func _AD_DeleteObjectEX($sAD_Object, $sAD_Class)

If Not _AD_ObjectExists($sAD_Object) Then Return SetError(1, 0, 0)
Local $sAD_CN
If StringMid($sAD_Object, 3, 1) <> "=" Then $sAD_Object = _AD_SamAccountNameToFQDN($sAD_Object) ; sAMAccountName provided
ConsoleWrite("$sAD_Object: " & @error & "-" & $sAD_Object & @LF)
Local $oAD_Object = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_Object)
ConsoleWrite("__AD_ObjGet $sAD_Object: " & @error & "-" & IsObj($oAD_Object) & @LF)
Local $oAD_OU = __AD_ObjGet($oAD_Object.Parent) ; Get the object of the OU/CN where the object resides
ConsoleWrite("__AD_ObjGet $oAD_OU: " & @error & "-" & IsObj($oAD_OU) & @LF)
If $sAD_Class = "organizationalUnit" Then
$sAD_CN = "OU=" & _AD_GetObjectAttribute($sAD_Object, "ou")
Else
$sAD_CN = "CN=" & _AD_GetObjectAttribute($sAD_Object, "cn")
EndIf
ConsoleWrite("_AD_GetObjectAttribute: " & @error & "-" & $sAD_CN & @LF)
$oAD_OU.Delete($sAD_Class, $sAD_CN)
If @error <> 0 Then Return SetError(@error, 0, 0)
Return 1

EndFunc

Here are the results of that

$sAD_Object: 0-CN=LNAME, FNAME,OU=Users,OU=Supervisors,OU=OPERATIONS,OU=Location - HO,DC=Domain,DC=com

__AD_ObjGet $sAD_Object: 0-1

__AD_ObjGet $oAD_OU: 0-1

_AD_GetObjectAttribute: 0-CN=LNAME, FNAME

--> COM Error Encountered in Suite_tray.au3

----> $IEComErrorScriptline = 30353

----> $IEComErrorNumberHex = 80020009

----> $IEComErrorNumber = -2147352567

----> $IEComErrorWinDescription = An invalid dn syntax has been specified.

----> $IEComErrorDescription =

----> $IEComErrorSource =

----> $IEComErrorHelpFile =

----> $IEComErrorHelpContext = 0

----> $IEComErrorLastDllError = 0

-2147352567-0

Edited by bartekd

Share this post


Link to post
Share on other sites

That looks much better now. Can you please give this function a try:

Func _AD_DeleteObjectEX($sAD_Object, $sAD_Class)

    If Not _AD_ObjectExists($sAD_Object) Then Return SetError(1, 0, 0)
    Local $sAD_CN
    If StringMid($sAD_Object, 3, 1) <> "=" Then $sAD_Object = _AD_SamAccountNameToFQDN($sAD_Object) ; sAMAccountName provided
ConsoleWrite("$sAD_Object: " & @error & "-" & $sAD_Object & @LF)
    Local $oAD_Object = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_Object)
ConsoleWrite("__AD_ObjGet $sAD_Object: " & @error & "-" & IsObj($oAD_Object) & @LF)
    Local $oAD_OU = __AD_ObjGet($oAD_Object.Parent) ; Get the object of the OU/CN where the object resides
ConsoleWrite("__AD_ObjGet $oAD_OU: " & @error & "-" & IsObj($oAD_OU) & @LF)
    If $sAD_Class = "organizationalUnit" Then
        $sAD_CN = "OU=" & _AD_FixSpecialChars(_AD_GetObjectAttribute($sAD_Object, "ou"))
    Else
        $sAD_CN = "CN=" & _AD_FixSpecialChars(_AD_GetObjectAttribute($sAD_Object, "cn"))
    EndIf
ConsoleWrite("_AD_GetObjectAttribute: " & @error & "-" & $sAD_CN & @LF)
    $oAD_OU.Delete($sAD_Class, $sAD_CN)
    If @error <> 0 Then Return SetError(@error, 0, 0)
    Return 1

EndFunc

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

That looks much better now. Can you please give this function a try:

Func _AD_DeleteObjectEX($sAD_Object, $sAD_Class)

If Not _AD_ObjectExists($sAD_Object) Then Return SetError(1, 0, 0)
Local $sAD_CN
If StringMid($sAD_Object, 3, 1) <> "=" Then $sAD_Object = _AD_SamAccountNameToFQDN($sAD_Object) ; sAMAccountName provided
ConsoleWrite("$sAD_Object: " & @error & "-" & $sAD_Object & @LF)
Local $oAD_Object = __AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_Object)
ConsoleWrite("__AD_ObjGet $sAD_Object: " & @error & "-" & IsObj($oAD_Object) & @LF)
Local $oAD_OU = __AD_ObjGet($oAD_Object.Parent) ; Get the object of the OU/CN where the object resides
ConsoleWrite("__AD_ObjGet $oAD_OU: " & @error & "-" & IsObj($oAD_OU) & @LF)
If $sAD_Class = "organizationalUnit" Then
$sAD_CN = "OU=" & _AD_FixSpecialChars(_AD_GetObjectAttribute($sAD_Object, "ou"))
Else
$sAD_CN = "CN=" & _AD_FixSpecialChars(_AD_GetObjectAttribute($sAD_Object, "cn"))
EndIf
ConsoleWrite("_AD_GetObjectAttribute: " & @error & "-" & $sAD_CN & @LF)
$oAD_OU.Delete($sAD_Class, $sAD_CN)
If @error <> 0 Then Return SetError(@error, 0, 0)
Return 1

EndFunc

$sAD_Object: 0-CN=LNAME, FNAME,OU=Users,OU=Supervisors,OU=OPERATIONS,OU=Location - HO,DC=Domain,DC=com

__AD_ObjGet $sAD_Object: 0-1

__AD_ObjGet $oAD_OU: 0-1

_AD_GetObjectAttribute: 0-CN=LName, FNAME

0-0

That worked like a charm. thanks. :) If you update your UDF, can you include that and also the other change you asked me to make regarding the error handler a couple pages back?

Share this post


Link to post
Share on other sites

If you update your UDF, can you include that and also the other change you asked me to make regarding the error handler a couple pages back?

Sure. I've already changed the source of the UDF and added to bug reports to page 1 of the download thread.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Thanks Water. :)

Share this post


Link to post
Share on other sites

Thanks for helping me to pin down this bug :)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

This is a continuation of my issue here

I tried it with a pc that I joined to the domain and received the same error message.

also to note I figured I would just try and join a pc to the domain to a computer object I created manually using the AD management tools from MS.

When I did this using my same AD_Open statement I got extended error 2202, which according to MS website is bad username. I tried to add my user directly to the joindomain command and then I get error 2 instead. If I run getallous it works fine so I know my userid is correct and it is a domain admin so has rights.

Share this post


Link to post
Share on other sites

I tried to add my user directly to the joindomain command and then I get error 2 instead

Error 2 as returned by _AD_JoinDomain means: $sAD_UserParam does not exist in the domain.

How did you specify the username?

According to the help file:

NetBIOSName (domainuser) or user principal name (user@domain)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0