Quantcast
Channel: PowerShell.com – PowerShell Scripts, Tips, Forums, and Resources
Viewing all articles
Browse latest Browse all 6937

Add recursive function

$
0
0

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
  
 }
 
 
}


Viewing all articles
Browse latest Browse all 6937

Trending Articles