danchitu86 Posted October 31, 2011 Share Posted October 31, 2011 Hello everybody! I need to make a script to query the Active Directory for the E-mail address for loged-on user.If the e-mail address field has a value in AD, the script work's ok, returns that value (see testemailok.PNG).But if this field is blank I got this error: $mailad = $oObject.Get ("mail")$mailad = $oObject.Get ("mail")^ ERROR->15:11:53 AutoIT3.exe ended.rc:1>Exit code: 1 Time: 2.114 When running the .exe file for this script I got the error attached (see error.png). How can I set AutoIt to handle that blank field without error? I need to use $mailad value in the same script for other actions. Thanks a lot! My code is:#include <Array.au3> Global $objConnection = ObjCreate("ADODB.Connection") ; Create COM object to AD $objConnection.ConnectionString = "Provider=ADsDSOObject" $objConnection.Open ("Active Directory Provider") ; Open connection to AD Global $objRootDSE = ObjGet("LDAP://RootDSE") Global $strDNSDomain = $objRootDSE.Get ("defaultNamingContext") ; Retrieve the current AD domain name Global $strHostServer = $objRootDSE.Get ("dnsHostName") ; Retrieve the name of the connected DC Global $strConfiguration = $objRootDSE.Get ("ConfigurationNamingContext") ; Retrieve the Configuration naming context $object=@UserName $strQuery = "<LDAP://" & $strHostServer & "/" & $strDNSDomain & ">;(sAMAccountName=" & $object & ");ADsPath;subtree" $objRecordSet = $ObjConnection.Execute ($strQuery) ; Retrieve the FQDN for the object $ldap_entry = $objRecordSet.fields (0).value $oObject = ObjGet($ldap_entry) ; Retrieve the COM Object for the object $oObject.GetInfo $mailad = $oObject.Get ("mail") $oObject.PurgePropertyList $oObject = 0 msgbox (4096, "Mail", $mailad) Link to comment Share on other sites More sharing options...
water Posted October 31, 2011 Share Posted October 31, 2011 (edited) You could use my Active Directory UDF (for download please see my signature). The UDF handles errors automatically and sets @error. To get the property "mail" for the current user you simply need to run something like: #include <AD.au3> _AD_Open() $sResult = _AD_GetObjectAttribute(@username, "mail") If @error = 2 Then MsgBox(16, "Error", "Attribute 'mail' does not exist for user " & @username) _AD_Close() Edited October 31, 2011 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...
danchitu86 Posted October 31, 2011 Author Share Posted October 31, 2011 Thanks a lot! It works! 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