This is an updated version of one of my old scripts - http://portal.sivarajan.com/2011/04/list-local-administrator-group-members.html based
on the discussion in the http://sivarajan.com/forum/viewthread.php?tid=59 thread. 

This updated script

  1. Searches Active Directory (Search_AD
    function) and collects the computer object information.  This
    information will be stored in the C:\Scripts\Servers.csv file. 
  2. The second function (Seach_LAdmin) uses
    C:\Scripts\Servers.csv file as an input  and collects the
    Local Administrator Group membership details from these computers.
  3. The third function (Send_Email), generates an email alert
    with the output file (C:\Scripts\SGroupMemberDetails.csv).

 

 More Info - http://portal.sivarajan.com/2011/10/search-ad-collect-local-admin-group.html

 

PowerShell
Edit|Remove
<#  
www.sivarajan.com 
  
Version 1.1 
  
This script searches Active Directory and collects computer object information (C:\Scripts\Servers.csv).   
The second function (Seach_LAdmin) collects the Local Administrator Group membership details from remote computers.   
The third function (Send_Email), generates an email alert with the output file (C:\Scripts\SGroupMemberDetails.csv). 
  
#> 
####################################################################################### 
Function Search_AD 
{ 
$ServerInfoFile = New-Item -type file -force "C:\Scripts\Servers.csv" 
"ServerName" | Out-File $ServerInfoFile -encoding ASCII 
 $n = 0 
 $ObjFilter = "(objectClass=Computer)" 
 $objSearch = New-Object System.DirectoryServices.DirectorySearcher 
 $objSearch.PageSize = 15000 
 $objSearch.Filter = $ObjFilter 
 $objSearch.SearchRoot = "LDAP://dc=santhosh, dc=lab" 
 $AllObj = $objSearch.FindAll() 
 Write-host -nonewline "Searching AD...." 
    foreach ($Obj in $AllObj) 
    {  
    $objItemT = $Obj.Properties 
    $CName = $objItemT.name 
    "$CName" | Out-File $ServerInfoFile -encoding ASCII -append 
    $n++ 
    } 
 Write-host "....$n Computer Objects Found" 
 } 
####################################################################################### 
 Function Search_LAdmin 
    { 
    $GFile = New-Item -type file -force "C:\Scripts\SGroupMemberDetails.csv" 
    Import-CSV "C:\Scripts\Servers.csv" | ForEach-Object { 
    $SName = $_.ServerName 
    $AdminPath = Test-Path "\\$SName\admin$" 
        If ($AdminPath -eq "TRUE") 
        { 
            Write-host -nonewline "Collecting Admin info from $SName...." 
            "Server Name - $SName" | Out-File $GFile -encoding ASCII -append 
            $group = [ADSI]("WinNT://$SName/Administrators,group")  
            $GMembers = $group.psbase.invoke("Members") 
            $GMembers | ForEach-Object {$_.GetType().InvokeMember("Name",'GetProperty'$null$_$null| Out-File $GFile -encoding ASCII -append} 
            Write-host "......Done!" 
        } 
  
        else 
        { 
        write-host -fore Red "Cannot Acces $SName"  
        out-file -inputObject "Server Name - $SName -> ########Cannot Access" -filepath $GFile -encoding ASCII -append 
  
        } 
  
    $GMembers = "" 
    } 
    } 
####################################################################################### 
function Send_Email 
    { 
    $EFrom = "amdin@santhosh.lab" 
    $ETo = "managers@santhosh.lab" 
    $ESubject = "Local Administrator Group Memebership Details"   
    $EBody = “Attached fle ($GFile) contians the local Admin group details” 
    $SMTPServer = "mail.santhosh.lab" 
    #Provide user name and password for SMTP server if required.   
    #$SMTPUsername = "SMTP User Name" 
    #$SMTPPassword = "SMTP Password" 
    $Emailmessage = New-Object system.net.mail.mailmessage  
    $Emailmessage.from = ($EFrom)  
    $Emailmessage.To.add($ETo) 
    $Emailmessage.Subject = $ESubject 
    $Emailmessage.Body = $EBody 
    $Attachment = New-Object System.Net.Mail.Attachment($GFile) 
    $Emailmessage.Attachments.Add($Attachment) 
    $SMTP = New-Object Net.Mail.SmtpClient($SMTPServer)   
    #$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("$SMTPUsername", "$SMTPPassword")  
    $SMTP.Send($Emailmessage) 
    } 
####################################################################################### 
clear 
Search_AD 
Search_LAdmin 
Send_Email 
#######################################################################################