jazzyjeff Posted October 31, 2011 Posted October 31, 2011 Hello, I have utility that allows users to see a list of users in our AD Structure and they can then reset passwords and unlock accounts for those users. Unfortunately, my boss doesn't want the users using this utility to be able to all users in one of our OU's. Here is what I had: $fUsers = _AD_GetObjectsInOU("OU=School Users,DC=domain,DC=com"),"(objectclass=user)") $sTemp = _ArrayToString($fUsers, "|", 1) I then have a Combo box that reads all the users. I am trying to pick out 2 sub OU's in the School Users OU to view those users. Unfortunately, I cannot get the variable to read users from only the 2 OU's I specified. Here is the code I have tried to make work: $fUsers = _AD_GetObjectsInOU(BitAND("OU=Students,OU=School Users,DC=domain,DC=com", "OU=Staff,OU=School Users,DC=domain,DC=com"), "(objectclass=user)") ;$fUsers1 = _AD_GetObjectsInOU("OU=Students,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $sTemp = _ArrayToString($fUsers, "|", 5) ;$sTemp1 = _ArrayToString($fUsers1, "|", 1) I am trying to extract users from both the Students and Staff OU's, and not receive any other users in the list. With the code I have above, I am receiving all the users like I am reading the OU, "OU=School Users,DC=domain,DC=com". I have tried creating 2 seperate array strings and view them in a combo box like this: GUICTRLSetData($comboUsername, BitAND($sTemp, $sTemp1)) This doesn't bring up any user names though. I am a little stumped on what to do now. Thanks, Jeff
water Posted October 31, 2011 Posted October 31, 2011 (edited) Do two queries and then combine the results $aStudents = _AD_GetObjectsInOU("OU=Students,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $aStaff = _AD_GetObjectsInOU("OU=Staff,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $sTemp1 = _ArrayToString($aStudents, "|", 1) $sTemp2 = _ArrayToString($aStaff, "|", 1) $sResult = $sTemp1 & "|" & $sTemp2If you need a sorted list then you have to use _ArrayConcatenate and _Arraysort and then create the string. 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
jazzyjeff Posted November 1, 2011 Author Posted November 1, 2011 Genius! Thanks again Water. I have managed to get it working with your help. I never knew about the _ArrayConcatenate function.Here is what I used in case anyone is interested.$fUsers = _AD_GetObjectsInOU("OU=Staff,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $fUsers1 = _AD_GetObjectsInOU("OU=Students,OU=School Users,DC=domain,DC=com", "(objectclass=user)") _ArrayConcatenate($fUsers, $fUsers1) _ArraySort($fUsers) $sCombo = _ArrayToString($fUsers, "|", 1) I tried this, but it still brought up users within the other sub OU's of the "School Users" OU.$aStudents = _AD_GetObjectsInOU("OU=Students,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $aStaff = _AD_GetObjectsInOU("OU=Staff,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $sTemp1 = _ArrayToString($aStudents, "|", 1) $sTemp2 = _ArrayToString($aStaff, "|", 1) $sResult = $sTemp1 & "|" & $sTemp2 Thank you for helping with the task at hand. I am curious though about how I would combine the array's of additional OU's. I have tried this, but it is bringing up an error.$fUsers = _AD_GetObjectsInOU("OU=Staff,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $fUsers1 = _AD_GetObjectsInOU("OU=Students,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $fUsers2 = _AD_GetObjectsInOU("OU=Generic Accounts,OU=School Users,DC=domain,DC=com", "(objectclass=user)") _ArrayConcatenate($fUsers, BitAND($fUsers1, $fUsers2)) _ArraySort($fUsers) $sCombo = _ArrayToString($fUsers, "|", 1) ERROR: _ArrayConcatenate() called with expression on Const ByRef-param(s)._ArrayConcatenate($fUsers, BitOR($fUsers1, $fUsers2))~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^C:\Program Files\AutoIt3\Include\Array.au3(204,86) : REF: definition of _ArrayConcatenate().Func _ArrayConcatenate(ByRef $avArrayTarget, Const ByRef $avArraySource, $iStart = 0) If you have any ideas on this I'd be grateful.
jazzyjeff Posted November 1, 2011 Author Posted November 1, 2011 I went away for a bit and was able to answer my own question. In case anyone else is interested: $fUsers = _AD_GetObjectsInOU("OU=Staff,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $fUsers1 = _AD_GetObjectsInOU("OU=Students,OU=School Users,DC=domain,DC=com", "(objectclass=user)") $fUsers2 = _AD_GetObjectsInOU("OU=Generic Accounts,OU=School Users,DC=domain,DC=com", "(objectclass=user)") _ArrayConcatenate($fUsers, $fUsers1) _ArrayConcatenate($fUsers, $fUsers2) _ArraySort($fUsers) $sCombo = _ArrayToString($fUsers, "|", 1) Pretty obvious when I sit back and think about it!
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