Here is another script from my last PowerShell class.  After we took a look at the script to enumerate the users who had User Rights assigned to them on a server, one the delegates in class asked if it was possible to enumerate the local users in local groups.  I had to resort to some PowerShell V1 tactics, but it works.  I also got a little help from Steve Schofield’s blog. 
      
<#
===========================================================
Script Name: LocalGroups.ps1
Author: Jason A. Yoder, MCT
Website: WWW.MCTExpert.com
Blogsite: WWW.MCTExpert.Blogspot.com
-----------------------------------------------------------
Script Purpose:
Enumerate the local user accounts that are members
of local groups
-----------------------------------------------------------
Variables:
$GroupList : Holds the names of all the groups on the 
             client.
$StrComputer : Used to store the name of the client to
               run this script on.  The "." means the
               local client.
$GL : Used to help cycle through the collection
      $Group List.
$Members : A collections of all the members of a group.               
===========================================================
#>
# =========================================================
# Main Code:
Set-StrictMode -version 2.0
# Enumerate the local groups on the client. 
$GroupList = Get-WmiObject Win32_Group | ForEach {$_.name}
$strComputer = "."
# Cycle through each group and enumerate the
# Group members.
ForEach ($GL in $GroupList)
{
    $computer = [ADSI]("WinNT://" + $strComputer + `
    ",computer")
    $Group = $computer.psbase.children.find($GL)
    $members= $Group.psbase.invoke("Members") | 
    %{$_.GetType().InvokeMember("Name", 'GetProperty', `
    $null, $_, $null)}
    # Display the group and its members.
    Write-Host "Group Name: $GL"
    ForEach($user in $members){Write-Host $user}
    Write-Host "------------------------------------------"
}
# == End of Main Code =====================================
Comments