water Posted May 16, 2010 Author Posted May 16, 2010 Thanks for your reply!I hope you won't find any bugs BTW:Does anyone miss the function _AD_IsAccountExpired and/or _AD_GetAccountsExpired? 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
Joe2010 Posted May 17, 2010 Posted May 17, 2010 (edited) Hi Water, please add this function (useful to reverse the settings from _AD_DisablePasswordExpire() after a certain time without changing the user password at next logon): Func _AD_EnablePasswordExpire($sAD_Object) If Not _AD_ObjectExists($sAD_Object) Then Return SetError(1, 0, 0) If StringMid($sAD_Object, 3, 1) <> "=" Then $sAD_Object = _AD_SamAccountNameToFQDN($sAD_Object) ; sAMAccountName provided Local $oAD_Object = _AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_Object) Local $iAD_UAC = $oAD_Object.Get("userAccountControl") $oAD_Object.Put("userAccountControl", BitAND($iAD_UAC, BitNOT($ADS_UF_DONT_EXPIRE_PASSWD))) $oAD_Object.SetInfo If @error <> 0 Then Return SetError(@error, 0, 0) Return 1 EndFunc ;==>_AD_EnablePasswordExpire Edited May 17, 2010 by Joe2010
water Posted May 17, 2010 Author Posted May 17, 2010 Will be available in the next version. 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
tom95521 Posted May 17, 2010 Posted May 17, 2010 I am using 0.38.1. I can set the account expiration date but I don't know how to list user account expiration date. Is this something that could be added. I want to do something like this. http://www.cruto.com/resources/vbscript/vbscript-examples/ad/users/status/List-the-Date-That-a-User-Account-Expires.asp Thanks, Tom
water Posted May 18, 2010 Author Posted May 18, 2010 I am using 0.38.1. I can set the account expiration date but I don't know how to list user account expiration date. Is this something that could be added.To get the account expiration date in readable form you can use something like this: $Result = _AD_GetObjectProperties("SamAccountName or FQDN","accountexpires") _ArrayDisplay($Result) In the next version I will add code to check if an account has expired and to get a list of all expired accounts (users, computers). I will post the code for _AD_IsAccountExpired and _AD_GetAccountsExpired here for you to test as soon as possible. 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
tom95521 Posted May 18, 2010 Posted May 18, 2010 Hi Water, The _AD_GetObjectProperties function works great for expiration date. Thanks! Tom
gcue Posted May 21, 2010 Posted May 21, 2010 (edited) i updated from 0.38.1 to 0.39 (without changing anything in the script) and im getting several errors where i didn't from 0.38.1 i couldn't track which lines its coming from bc the reported lines are from the ad.au3 and after looking at those lines i couldn't figure out why either.. U:\scripts\Dashboard\AD.au3(1609,59) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $sAD_Now = _Date_Time_SystemTimeToDateTimeStr($sAD_Now, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(1752,69) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $sAD_DTExpire = _Date_Time_SystemTimeToDateTimeStr($sAD_DTExpire, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(1771,78) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $aAD_FQDN[$iAD_Count][1] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(1773,78) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $aAD_FQDN[$iAD_Count][2] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(1918,93) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $aAD_ObjectProperties[$iCount3][1] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp3, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(2859,71) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $aAD_PwdInfo[10] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp2, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(2863,70) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $aAD_PwdInfo[8] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp2, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\AD.au3(2866,70) : ERROR: _Date_Time_SystemTimeToDateTimeStr() called with wrong number of args. $aAD_PwdInfo[9] = _Date_Time_SystemTimeToDateTimeStr($sAD_Temp2, 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Program Files\AutoIt3\Include\Date.au3(2797,60) : REF: definition of _Date_Time_SystemTimeToDateTimeStr(). Func _Date_Time_SystemTimeToDateTimeStr(ByRef $tSystemTime) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ U:\scripts\Dashboard\dashboard v0.3.3.2.au3 - 8 error(s), 0 warning(s) Edited May 21, 2010 by gcue
water Posted May 21, 2010 Author Posted May 21, 2010 (edited) What version of AutoIt do you use? Looks like an "old" one that only supports 1 parameter for function _Date_Time_SystemTimeToDateTimeStr. Edited May 22, 2010 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
rogerd2u Posted May 21, 2010 Posted May 21, 2010 Hey, Water, I just wanted to say you are doing a phenomenal job on this UDF! Keep up the great work, man! Roger O."When people show you who they are, believe them. --Mark Twain
water Posted May 22, 2010 Author Posted May 22, 2010 Hey, Water, I just wanted to say you are doing a phenomenal job on this UDF! Keep up the great work, man!Glad you like the UDF! I'm heavily using it myself and I'm glad that I can return a bit to the Autoit community 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
gcue Posted May 24, 2010 Posted May 24, 2010 v3.3.0.0didn't know there was a pre-req =)What version of AutoIt do you use? Looks like an "old" one that only supports 1 parameter for function _Date_Time_SystemTimeToDateTimeStr.
water Posted May 25, 2010 Author Posted May 25, 2010 didn't know there was a pre-req =)Didn't know it myself I've been searching the forum but in the history there is no evidence when _Date_Time_SystemTimeToDateTimeStr was changed. 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
gcue Posted May 25, 2010 Posted May 25, 2010 aah ok maybe something to mention for ver .39 and above? thanks! =)
water Posted May 26, 2010 Author Posted May 26, 2010 maybe something to mention for ver .39 and above?Will change page 1 of this thread and the UDF source accordingly. 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
lafafmentvotre Posted May 26, 2010 Posted May 26, 2010 Hi everybody and sorry for english I test the famous 0.39 version and the _AD_GetObjectsLocked function. In AD2008, i have an account who is in locked status but when i test the _AD_GetObjectsLocked example, the error is code 2 and, of course, the msgbox is : No locked user accounts have been found Is there a solution to obtain array with locked account ? Thanks for response and thanks Water for this UDF
water Posted May 26, 2010 Author Posted May 26, 2010 (edited) Hi lafafmentvotre, could you please test _AD_IsObjectLocked() against an account you know is locked at the moment? _AD_GetObjectsLocked() get's a list of all accounts with attribute "lockouttime" > 1 and then uses _AD_IsObjectLocked() to delete all users for which the lockout time has expired. This is because "lockouttime" is only reset at next logon. Edited May 26, 2010 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
lafafmentvotre Posted May 26, 2010 Posted May 26, 2010 Hello Water I have the same problem with_AD_IsObjectLocked() for a user who is locked (Account is locked out in account properties) $lockeduser=the locked account If _AD_IsObjectLocked($lockeduser) Then MsgBox(64, "Active Directory Functions", "User account '" & $lockeduser & "' is locked") Else MsgBox(64, "Active Directory Functions", "User account '" & $lockeduser & "' is not locked") EndIf Result is : "User account 'xxxxx' is not locked"
water Posted May 26, 2010 Author Posted May 26, 2010 (edited) What version of AutoIt do you run? There was a bug in _Date_Time_SystemTimeToDateTimeStr before version 3.3.1.2 Edited May 26, 2010 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
lafafmentvotre Posted May 26, 2010 Posted May 26, 2010 I use the v3.3.6.0 I can download the last version (v3.3.6.1) and test it if you want.
water Posted May 26, 2010 Author Posted May 26, 2010 (edited) 3.3.6.0 is fine. The problem has been solved with 3.3.1.2 Could you please run this version against the account you know is locked and post the results? Func _AD_IsObjectLocked_Ex($sAD_Object = @UserName) If Not _AD_ObjectExists($sAD_Object) Then Return SetError(1, 0, 0) Local $sAD_Property = "sAMAccountName" If StringMid($sAD_Object, 3, 1) = "=" Then $sAD_Property = "distinguishedName"; FQDN provided Local $sAD_Query = "<LDAP://" & $sAD_HostServer & "/" & $sAD_DNSDomain & ">;(" & $sAD_Property & "=" & $sAD_Object & ");ADsPath;subtree" Local $oAD_RecordSet = $oAD_Connection.Execute($sAD_Query) ; Retrieve the FQDN for the object Local $sAD_LDAPEntry = $oAD_RecordSet.fields(0).value Local $oAD_Object = _AD_ObjGet($sAD_LDAPEntry) ; Retrieve the COM Object for the object Local $oAD_LockoutTime = $oAD_Object.LockoutTime ; Object is not locked out If Not IsObj($oAD_LockoutTime) Then Return ; Calculate lockout time (UTC) Local $sAD_LockoutTime = _DateAdd("s", Int(_AD_LargeInt2Double($oAD_LockoutTime.LowPart, $oAD_LockoutTime.HighPart) / (10000000)), "1601/01/01 00:00:00") ConsoleWrite("$sAD_LockoutTime: " & $sAD_LockoutTime & @CRLF) ; Object is not locked out If $sAD_LockoutTime = "1601/01/01 00:00:00" Then Return ; Get password info - Account Lockout Duration Local $aAD_Temp = _AD_GetPasswordInfo($sAD_Object) ConsoleWrite("GetPasswordInfo: " & _ArrayToString($aAD_Temp) & @CRLF) ; Calculate when the lockout will be reset Local $sAD_ResetLockoutTime = _DateAdd("n", $aAD_Temp[5], $sAD_LockoutTime) ConsoleWrite("$sAD_ResetLockoutTime: " & $sAD_ResetLockoutTime & @CRLF) ; Compare to current date/time (UTC) Local $sAD_Now = _Date_Time_GetSystemTime() $sAD_Now = _Date_Time_SystemTimeToDateTimeStr($sAD_Now, 1) ConsoleWrite("$sAD_Now: " & $sAD_Now & @CRLF) If $sAD_ResetLockoutTime >= $sAD_Now Then Return SetError(_DateDiff("n", $sAD_Now, $sAD_ResetLockoutTime), 0, 1) Return EndFunc Edited May 26, 2010 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
Recommended Posts