#42491 - 2003-07-07 02:43 PM
Functions
|
David Nicholls
Fresh Scripter
Registered: 2002-01-02
Posts: 24
Loc: London, UK
|
How do I return multiple values from a funtion?
Can I pass and return an array from a function?
In the script I am writing at the moment, I am trying to break it up into a series of function calls. I would like to be able to return an array from a function alongside a number of other variables
Hope you can help
|
|
Top
|
|
|
|
#42494 - 2003-07-07 04:56 PM
Re: Functions
|
David Nicholls
Fresh Scripter
Registered: 2002-01-02
Posts: 24
Loc: London, UK
|
I thought I had it conceptually understood, but this little segment doesnt work... I have obviously misunderstood somehting somewhere
(The needs to be replaced by something valid on your network naturally
code:
$acctDomain = "<put your account domain here>"
$groupMembership = udfInDomainGroup($AcctDomain)
$domainsize=UBOUND($groupMembership)
? ? "********* Counting Back From Returned Array*********" ? "Total Number of Groups: " + $domainsize FOR each $member in $groupMembership ? "Member of :" $member NEXT
FUNCTION udfInDomainGroup($AcctDomain)
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;+Obtain User Domain Group Membership in an array + ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
? "Get Global Group memberships..." ;$text = "Enumerating Group Membership" ;addLogText($Text)
Dim $udfInDomainGroup[1] $Index = 0 $domGroupCount = 0 ? "Account Domain:" + $AcctDomain DO $Group = EnumGroup($Index) $splitGroup = Split($Group,"\") IF UBOUND ($splitGroup) = 1 IF $splitGroup[0] = $AcctDomain ;? $splitGroup[1] $udfInDomainGroup[$domGroupCount] = $splitGroup[1] $domGroupCount = $domGroupCount + 1 ;? $udfInDomainGroup[($domGroupCount - 1)] REDIM PRESERVE $udfInDomainGroup[$domGroupCount] ;? $udfInDomainGroup[$domGroupCount - 1] ENDIF ENDIF $Index = $Index + 1 UNTIL LEN($Group) = 0 $domGroupCount = $domGroupCount - 1
? ? "********* Counting Back From Array*********" ? "Total Number of Groups: " + $domGroupCount ?
For each $member in $udfInDomainGroup ? " Member of :" + $member next
ENDFUNCTION
|
|
Top
|
|
|
|
#42496 - 2003-07-07 05:11 PM
Re: Functions
|
Richard H.
Administrator
   
Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
|
I think this is what you are after:
code:
Function udfInDomainGroup($sDomain) Dim $sGroup Dim $iIndex
$iIndex=0 $sGroup=EnumGroup($iIndex) While $sGroup If Instr($sGroup,$sDomain+"\")=1 Redim Preserve $udfInDomainGroup[Ubound($udfInDomainGroup)+1] $udfInDomainGroup[Ubound($udfInDomainGroup)]=SubStr($sGroup,InStr($sGroup,"\")+1) EndIf $iIndex=$iIndex+1 $sGroup=EnumGroup($iIndex) Loop Return EndFunction
|
|
Top
|
|
|
|
#42497 - 2003-07-07 05:37 PM
Re: Functions
|
David Nicholls
Fresh Scripter
Registered: 2002-01-02
Posts: 24
Loc: London, UK
|
Jens, Richard thanks both again for your help
Retrieving the group memberships works fine and populates the array, however its returning the array out of the function I am getting wrong
Please teach me how to fish I've quite a few other segments like this I have to work on in my script
|
|
Top
|
|
|
|
#42499 - 2003-07-07 06:06 PM
Re: Functions
|
David Nicholls
Fresh Scripter
Registered: 2002-01-02
Posts: 24
Loc: London, UK
|
Took out the line
code:
Dim $udfInDomainGroup[1]
and tidied up so that it doesnt redim one extra time and it all works
Thanks for your time again
|
|
Top
|
|
|
|
Moderator: Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
|
1 registered
(Allen)
and 781 anonymous users online.
|
|
|