WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Samples from Users

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

ADSI Get Subgroups of Group


; ======================================================================
; 
; WinBatch Source File -- Created with PrimalScript 3.1
; 
; NAME: Get All Sub-Groups (indirect and direct) of selected group
; 
; AUTHOR: Adam Jongewaard
; DATE  : 12/7/2004
; COMMENT: 
; 
; ========================================================================

AddExtender("WWADS34I.DLL")
UserName="uid"

#DefineFunction GetGroups(sGroupPath)
   lGroups = dsGetMemGrp(sGroupPath)
   lAllGroups = ""
   For i = 1 To ItemCount(lGroups, @TAB)
      If dsIsObject(ItemExtract(i, lGroups, @TAB)) && StriCmp(dsGetClass(ItemExtract(i, lGroups, @TAB)), "group") == 0 Then
         If lAllGroups == "" Then lAllGroups = ItemExtract(i, lGroups, @TAB)
		   Else lAllGroups = StrCat(lAllGroups,@TAB,ItemExtract(i, lGroups, @TAB))
         newgrp = GetGroups(ItemExtract(i, lGroups, @TAB))
         If newgrp <> "" Then lAllGroups = StrCat(lAllGroups,@TAB,newgrp)
      EndIf
   Next
   Return lAllGroups
#EndFunction

groups = GetGroups("Group-ADSI-Path")
mygroups = dsGetProperty("User-ADSI-Path","memberOf")
For i = 1 To ItemCount(mygroups,@TAB)
   group=ItemExtract(2,ItemExtract(1,ItemExtract(i,mygroups,@TAB),","),"=")
   grouppath = dsFindPath("LDAP://DOMAIN.COM/DC=DOMAIN,DC=com","sAMAccountName=%group%")
   If ItemLocate(grouppath,groups,@TAB) <> 0 Then Break
   group = ""
Next



If group <> "" Then Message("%UserName% is a member of GroupName through:",group)
Else Message("Error","%UserName% is not a member of GroupName."

Article ID:   W16328
File Created: 2005:02:18:12:19:48
Last Updated: 2005:02:18:12:19:48