Solved

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

Posted on 2013-10-30
9
608 Views
Last Modified: 2013-10-31
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
Comment
Question by:MilesLogan
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 20

Expert Comment

by:TheAvenger
ID: 39610882
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
 
LVL 40

Expert Comment

by:Subsun
ID: 39610982
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
 
LVL 35

Expert Comment

by:YZlat
ID: 39611606
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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 2

Author Comment

by:MilesLogan
ID: 39611643
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
 
LVL 40

Expert Comment

by:Subsun
ID: 39611708
@MilesLogan, Could you please clarify my above question?
0
 
LVL 2

Author Comment

by:MilesLogan
ID: 39611718
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
 
LVL 40

Accepted Solution

by:
Subsun earned 500 total points
ID: 39611772
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
 
LVL 35

Expert Comment

by:YZlat
ID: 39612101
could you show me the sample content of Users.txt and Groups.txt?
0
 
LVL 2

Author Closing Comment

by:MilesLogan
ID: 39615646
Worked perfect ! thanks !
0

Featured Post

Is Your AD Toolbox Looking More Like a Toybox?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Utilizing an array to gracefully append to a list of EmailAddresses
The following article is intended as a guide to using PowerShell as a more versatile and reliable form of application detection in SCCM.
This tutorial will walk an individual through the process of transferring the five major, necessary Active Directory Roles, commonly referred to as the FSMO roles to another domain controller. Log onto the new domain controller with a user account t…
This tutorial will walk an individual through setting the global and backup job media overwrite and protection periods in Backup Exec 2012. Log onto the Backup Exec Central Administration Server. Examine the services. If all or most of them are stop…

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now