• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 645
  • Last Modified:

Powershell - How to check if a set of users are members of certain groups.

Hi EE

This is a weird issue even describing .. Does anyone have a way of doing the task below .

I have a set of users .. 2500 .. and I need to know which users are members of a set of 5 groups ..

any ideas ?
0
MilesLogan
Asked:
MilesLogan
  • 3
  • 3
  • 2
  • +1
1 Solution
 
TheAvengerCommented:
General idea: create a string with all your users, then call a function to check the membership and react for each one of them.

Here is a topic on array initialization with strings and going through it using a for loop: http://get-powershell.com/post/2008/02/07/Powershell-function-New-Array.aspx

Here is a topic on how to check user membership in a group: http://social.technet.microsoft.com/Forums/scriptcenter/en-US/1e75ab95-fd52-4eb5-a1c3-136d14050b63/check-if-specific-user-is-member-of-specific-group

There are many more articles on the topics in google, so you just need to combine several to reach your solution.
0
 
SubsunCommented:
What type of result file are you looking for? Do you need to report each group membership status (True false against each group) or just report if they are missing any group? or do you need to add them to group if they are missing the group membership?
0
 
YZlatCommented:
See if this works for you:

$Groups = Get-Content C:\GroupsList.txt
$Users = Get-Content C:\UserList.txt

$MembersArray = @()

foreach ( $User in $Users ) {
        foreach ( $Group in $Groups ) {

            $memberOf = Get-QADMemberOf -Identity $User -Name $Group

            if($memberOf)
            {
                $MembersArray += $User
            }
         
        }
        
}


$MembersArray | Export-CSV C:\ListOfMembers.csv -NoType

Open in new window

0
Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
MilesLoganAuthor Commented:
Hi YZlat

I modified the path to point to where I have the user and group list and the outout is listed below ..

PSPath      PSParentPath      PSChildName      PSDrive      PSProvider      ReadCount      Length
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      1      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      1      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      1      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      2      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      2      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      2      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      2      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      2      8
E:\Projects\Groups\Users.txt      E:\Projects\Groups      Users.txt      E      Microsoft.PowerShell.Core\FileSystem      2      8
0
 
SubsunCommented:
@MilesLogan, Could you please clarify my above question?
0
 
MilesLoganAuthor Commented:
Hi SubSub .. I just need to know if they are a member of any of those groups ..  I just need the SAmAccountName and which group they where a member of in the output file .
0
 
SubsunCommented:
Try this and see if the output works for you...
$Groups = Get-Content C:\temp\Groups.txt
Get-Content C:\temp\User.txt | % {
$User = $_
 foreach ($Group in $Groups) {
	If(!(Get-QADMemberOf $User -Name $Group))
	{
		New-Object PSObject -Property @{
			User = $User
			Group = $Group
			Member = "No"
		}
	}
	Else{
		New-Object PSObject -Property @{
			User = $User
			Group = $Group
			Member = "Yes"
		}
	}
}
} | Select User,Group,Member | Export-CSV C:\Report.csv -NTI

Open in new window

0
 
YZlatCommented:
could you show me the sample content of Users.txt and Groups.txt?
0
 
MilesLoganAuthor Commented:
Worked perfect ! thanks !
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 3
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now