Hi GUYS,
Can Someone help me to add recursive function to this code
Set-PSDebug -strict
Function Get-ADGroupMembers ($Group)
{
$DomainName = $Group.Split("\") | Select -First 1
$DomainName = $DomainName.ToUpper()
$GroupName = $Group.Split("\") | Select -Last 1
$Results = @()
Foreach ($ADsPath in $ADsPaths)
{
$ADSPathString = $ADsPath.dc
$ADSPathString = $ADSPathString.ToString()
$ADSPathString = $ADSPathString.ToUpper()
If( $ADSPathString -Eq $DomainName )
{
$Searcher = New-Object System.DirectoryServices.DirectorySearcher($ADsPath)
$Searcher.Filter = "(&(objectClass=Group)(sAMACCOUNTName=$GroupName))"
$Result = $Searcher.FindOne()
If($Result -Ne $Null)
{
$GroupOutput = $Result.GetDirectoryEntry()
$Members = $GroupOutput.member
Foreach($Member in $Members)
{
$Memberoutput = [ADSI]
$SAMName = $Memberoutput.SamAccountName
# 805306368 = User ; 268435456 = Group
$SAMACcountType = $Memberoutput.sAMAccountType
If($SAMACcountType -Eq 805306368)
{
$Type = "User"
}
ElseIf($SAMACcountType -Eq 268435456)
{
$Type = "Group"
}
$Result = New-object PSObject
$Result | Add-member -type Noteproperty -Name Group -Value $Group
$Result | Add-member -type Noteproperty -Name Member -Value $SAMName
$Result | Add-member -type Noteproperty -Name Type -Value $Type
$Results += $Result
}
Return $Results
}
Else
{
$Searcher.Filter = "(&(objectClass=Group)(DsiplayName=$GroupName))"
$Result = $Searcher.FindOne()
If($Result -Ne $Null)
{
$GroupOutput = $Result.GetDirectoryEntry()
$Members = $GroupOutput.member
Foreach($Member in $Members)
{
$Memberoutput = [ADSI]
$SAMName = $Memberoutput.sAMAccountName
# 805306368 = User ; 268435456 = Group
$SAMACcountType = $Memberoutput.sAMAccountType
If($SAMACcountType -Eq 805306368)
{
$Type = "User"
}
ElseIf($SAMACcountType -Eq 268435456)
{
$Type = "Group"
}
$Result = New-object PSObject
$Result | Add-member -type Noteproperty -Name Group -Value $Group
$Result | Add-member -type Noteproperty -Name Member -Value $SAMName
$Result | Add-member -type Noteproperty -Name Type -Value $Type
$Results += $Result
}
Return $Results
}
Else
{
$Result = New-object PSObject
$Result | Add-member -type Noteproperty -Name Group -Value $Group
$Result | Add-member -type Noteproperty -Name Member -Value "Not Found"
$Result | Add-member -type Noteproperty -Name Type -Value "Not Found"
$Results += $Result
}
}
}
}
Return $Results
}
#********************************************************************************************************************************************
$postfix = (get-date -uformat "%d_%m_%Y_%H_%M_%S")
$LogFile = "GroupMembers_$postfix.log"
"Group Name>Members" > $LogFile
$Groups = GC Groupinput.txt
Foreach($Group in $Groups)
{
$Results = Get-ADGroupMembers $Group
Foreach($Result in $Results)
{
$Member = $Result.Member
$Type = $Result.Type
"$Group>$Member>$type" >> $LogFile
}
}