Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 635
  • 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
Making Bulk Changes to Active Directory

Watch this video to see how easy it is to make mass changes to Active Directory from an external text file without using complicated scripts.

 
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

Simplify Active Directory Administration

Administration of Active Directory does not have to be hard.  Too often what should be a simple task is made more difficult than it needs to be.The solution?  Hyena from SystemTools Software.  With ease-of-use as well as powerful importing and bulk updating capabilities.

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