Quantcast
Channel: The Official Scripting Guys Forum! forum
Viewing all articles
Browse latest Browse all 15028

PowerShell Script to fetch local admin group membership from multiple servers

$
0
0

#Provide the lists of server input and script gives output csv listing members of local admin group

#Its working script however please first try on test machine and then execute on multiple machines

#below is script

#######################################################################

$servers = Get-Content C:\temp\servers.txt #Enter the name of the target computer, localhost is used by default
$Counter = 1
$result = @()
ForEach($server in $servers){
Write-Host "Computer: $server"
$computer = [ADSI]"WinNT://$server"
$objCount = ($computer.psbase.children | measure-object).count
Write-Host "Q-ty objects for computer '$server' = $objCount"

foreach($adsiObj in $computer.psbase.children)
{
  switch -regex($adsiObj.psbase.SchemaClassName)
    {
      "group"
      {
        $group = $adsiObj.name
        $LocalGroup = [ADSI]"WinNT://$server/$group,group"
        $Members = @($LocalGroup.psbase.Invoke("Members"))
        $objCount = ($Members | measure-object).count
        Write-Host "Q-ty objects for group '$group' = $objCount"
        $GName = $group.tostring()

        ForEach ($Member In $Members) {
          $Name = $Member.GetType().InvokeMember("Name", "GetProperty", $Null, $Member, $Null)
          $Path = $Member.GetType().InvokeMember("ADsPath", "GetProperty", $Null, $Member, $Null)
          Write-Host " Object = $Path"

                   $isGroup = ($Member.GetType().InvokeMember("Class", "GetProperty", $Null, $Member, $Null) -eq "group")
          If (($Path -like "*/$server/*") -Or ($Path -like "WinNT://NT*")) { $Type = "Local"
          } Else {$Type = "Domain"}
          $result += New-Object PSObject -Property @{
            Computername = $server
            Members = $Name
            ParentGroup = $GName
            PathMember = $Path
            TypeMemeber = $Type
           
           
          }
        }
      }
    } #end switch
} #end foreach
}
Write-Host "Total objects = " ($result | measure-object).count
$result = $result | select-object Computername, ParentGroup, Members, TypeMemeber, PathMember
$result | Export-Csv -path C:\Temp\localgroups.csv -NoTypeInformation


Viewing all articles
Browse latest Browse all 15028

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>